2015-11-25 4 views
0

У меня есть массив под названием $brand_terms. Я получаю доступ к двум объектам в этом массиве. В этом случае «имя» и «слизняк». Затем я пытаюсь установить значения этих объектов в ассоциативном массиве с именем $values. Код ниже:PHP: динамически заданные значения в ассоциативном массиве

$brand_terms = get_terms("pa_brand"); 
$values = array(
    foreach ($brand_terms as $brand_term){ 
     $brand_term->name => $brand_$term->slug, 
    } 
); 

У меня есть проблема с разделителем ,. Итак, запятая в конце $brand_term->name => $brand_$term->slug,. Если цикл имеет последнее значение в массиве, запятая не нужна и код не работает. Есть ли хороший способ удалить эту запятую из последней итерации цикла foreach?

Thanks

ответ

7

Этот синтаксис является полностью неправильным. Вы не можете иметь цикл в объявлении массива.

Вместо создания массива, а затем нажмите элементы в него во время цикла:

$brand_terms = get_terms("pa_brand"); 
$values = array(); 
foreach ($brand_terms as $brand_term){ 
    $values[$brand_term->name] = $brand_$term->slug; 
} 
+0

Да, PHP на самом деле не имеют каких-либо проблем с дополнительной запятой в последнем элементе массива , –

2

На самом деле, проблема вовсе не с , буквального, на самом деле это не действует PHP. Вы не можете иметь цикл foreach внутри объявления массива.

Лучший подход заключается в определении массива, а затем цикл по значению get_terms() возвратного следующим образом:

$values = array(); 

foreach(get_terms('pa_brand') as $term) 
{ 
    $values[$term->name] = $term->slug; 
} 
Смежные вопросы