2012-04-29 2 views
0

У меня проблема с преобразованием переменных в массив. Я запускаю foreach loop для получения значений из моего многомерного массива $ images. $ images содержит имя изображения, например: «Item Blue.png» или «Item Light Oak.png» и идентификатор каждого изображения.Преобразование переменных в массив

foreach ($images['images'] as $image) { 
    $image_name = explode(" ", substr_replace($image->filename ,"",-4)); 
    if(!empty($image_name[2])) { 
     $colour = ucfirst($image_name[1] . " " . $image_name[2]); 
    } 
    else { 
     $colour = ucfirst($image_name[1]); 
    } 
} 

$ переменная цвета дает мне название цвета, а идентификатор $ image-> дает мне идентификатор изображения.

Я хотел бы построить $ цвета массив выше переменных, которые он будет выглядеть следующим образом:

$colors = array(
    'Blue' => 1620, 
    'Green' => 1467, 
); 

Вид, как это:

$colors = array(
    '$colour' => $image->id, 
); 

Я понятия не имею, как это сделать и Буду признателен за любую помощь, чтобы дать мне хотя бы некоторые направления.

Благодаря

+0

вы можете показать нам некоторые входные и выходные выборки? –

+0

print_r ($ images); Массив ( [изображения] => Массив ( [1620] => ProductImage Object ( [имя файла] => Brancepeth Blue.png [ID] => 1620 ) ) – Chriser

ответ

1

Это должно быть довольно просто ... Две вещи, чтобы сделать:

инициализирован цветам массива за пределами вашей Еогеасп:

$colors=array(); //<-- add this 
foreach ($images['images'] as $image) { 
    $image_name = explode(" ", substr_replace($image->filename ,"",-4)); 
    ... 

затем просто добавить одну строку после if/else, все еще внутри вашего цикла foreach, который добавит новый элемент в массив $ colors.

... 
    else { 
     $colour = ucfirst($image_name[1]); 
    } 
    $colors[$colour]=$image->id; //<-- add this 
} 

Это создаст массив цветов с содержимым, подобным тому, что вы ищите. Я предполагаю, что в итераторе $ image есть ключ «id». Вам нужно было создать его?

Все, что сказал, что вы не проверяла эти проблемы:

  1. названия цветов с пробелами, как «светлый дуб»
  2. имена элементов с пробелами, как «большой элемент света oak.png»
  3. дублированные цвета с различными идентификаторами

Надежда, что помогает

+0

небольшая проблема Array ([0] => Массив ([Синий] => 1620) [1] => Массив ([Зеленый] => 1621) [2] => Массив ([Красный] => 1622) [3] => Массив ([ White] => 1623) [4] => Массив ([Бронзовый левый] => 1670) [5] => Массив ([Бронзовый правый] => 1671) [6] => Массив ([Хром влево] => 1672) [7] => Array ([Chrome Right] => 1673)) – Chriser

+0

отредактировал ответ. Извинения за путаницу. Строка, которая добавляет элементы в массив, была неправильной. –

+0

filename will быть последовательным, и я мог бы работать над этим позже, здесь проблема с кодом, у массива есть собственный ключ. Ключ должен быть цвета. – Chriser

Смежные вопросы