2010-09-29 2 views
1

Мне нужно преобразовать этот массив в одномерный индексированный массив или строку. С удовольствием отбросить первый ключ (0, 1) и просто сохранить значения.Преобразование этого ассоциативного массива в строку или один индексный массив

$security_check_whitelist = array 
    0 => 
    array 
     'whitelisted_words' => string 'Happy' (length=8) 
    1 => 
    array 
     'whitelisted_words' => string 'Sad' (length=5) 

Я пробовал array_values ​​(), но он вернул ту же структуру массива.

Это работает:

$array_walker = 0; 
$array_size = count($security_check_whitelist); 

while($array_walker <= $array_size) 
{ 
    foreach($security_check_whitelist[$array_walker] as $security_check_whitelist_value) 
    { 
     $security_check[] = $security_check_whitelist_value; 
    } 
    $array_walker++; 
} 

Но он возвращает:

Предупреждения: Неверный аргумент, поставляемый для Еогеаспа()

Как я могу преобразовать ассоциативный массив, не получая предупреждающее сообщение? Есть ли способ лучше?

ответ

2
foreach ($security_check_whitelist as &$item) { 
    $item = $item['whitelisted_words']; 
} 

Или просто:

$security_check_whitelist = array_map('current', $security_check_whitelist); 
+0

Отлично, надеялся найти более компактное решение. – JMC

2

Проблема здесь может быть то, что вы должны ходить только до N -1, так $array_walker < $array_size.

+0

+1 - Хороший глаз, это и послужило причиной предупреждения. – JMC

1

Так же есть и «whitelisted_words» массив? Если да, то я думаю, что следующий будет работать:

$single_dim_array = array(); 
foreach(array_values($security_check_whitelist) as $item) { 
    foreach($item['whitelisted_words'] as $word) { 
     $single_dim_array[] = $word; 
    } 
} 

Тогда переменная $ single_dim_array содержит все слова из белого списка.

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