0

I have a simple php question.

I have a value like the following for 2 products. 1 product has options density, flavor and pid other product has option color and pid

product 1

density: Low 12mg, flavor: Dekang Dark USA Mix, pid: 165 

product 2

color: Silver, pid: 5 

The above 2 values comes in a single array

$items[$i]['options']

How can i convert it into an array of the following format...

product 1-   density => 'Low 12mg, flavor =>  'Dekang Dark USA Mix', pid => '165'
product 2-    color =>  'Silver', pid => '5'

and how to call it in a foreach loop so that i get values separately for 2 products ?

1
  • The input data comes as an array with two values or as a string with two delimited values? I find the input data format to be Unclear. Commented Dec 17, 2024 at 20:43

1 Answer 1

2

Assuming options values are separated by comma:

$myArray = explode(',', $items[$i]['options']);

Then you can use that array to fill in your object. Full example:

$items[0] = array("id" => 1,  
          "options" => 'density: Low 12mg, flavor: Dekang Dark USA Mix, pid: 165');
$items[1] = array("id" => 2,
          "options" => 'color: Silver, pid: 5');

$newItems = array();
foreach ($items as $item) {

    $options = explode(',', $item['options']);

    foreach ($options as $option) {
        $values = explode(':', $option);
        $item[trim($values[0])] = trim($values[1]);
    }
    $newItems[] = $item;
}

print_r($newItems);

http://sandbox.onlinephpfunctions.com/code/1b4ccc3ee27b53340cabff8d313f4733085e01e2

Sign up to request clarification or add additional context in comments.

16 Comments

I think the OP wants to make the label: an associative array of the item pieces. So: $item['density'] => 'Low 12mg'.
@Xabier The above code is not working...I have corrected errors in code above like missing closing bracket etc..
well, it was just a quick example, you will have to test further, i am writing the full sample and post it soon
@Xabier This link is of similar type issue. but i am unable to understand it: stackoverflow.com/questions/4335963/…
@user3790186 - To a certain degree, you may need to take code that demonstrates what you need and customize it to your particular code sequence. For instance, wrap it in a function and call the function when you need it.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.