2017-01-18 2 views
0

Я пытаюсь отобразить массив без ключевого элемента. Просто хочу отображать значения массива без ключа. Вот мой пример кода я попыталсяДисплей массива без ключа

$myList = array(
     0 =>array(
       "product_id"=> 8085 
      ), 
     1 =>array(
       "product_id"=> 8087 
      ), 
      2 =>array(
       "product_id"=> 8086 
      ), 
      3 =>array(
       "product_id"=> 8042 
      ), 
     ); 


    $newList = array(); 
foreach($myList as $listItem) { 
    $newList[] = $listItem['product_id']; 
} 
$a=array(); 
$a= array_values($newList); 
print_r($a); 

Я хочу, чтобы мой массив как этот

$productIds = array(8085,8087,8086,8042); 

Вот мой пример кода link

+0

Вы хотите, чтобы это выглядело, как это при печати? Потому что ваша часть 'like this' является строкой php-кода! – JustOnUnderMillions

+0

Если вы печатаете массив с помощью 'print_r()', он всегда будет печатать ключи массива. Вы можете использовать 'implode()' или некоторый простой цикл с 'echo'. – Rizier123

+0

'$ newList' уже в этом формате. Не понимаю, что случилось. – CodeGodie

ответ

1

Вы ищете array_column (который доступен как из PHP 5.5):

$productIds = array_column($myList, 'product_id'); 

Это дает:

var_export($productIds); 

array (
    0 => 8085, 
    1 => 8087, 
    2 => 8086, 
    3 => 8042, 
) 

Какой именно то, что вы хотите:

var_dump($productIds === array(8085,8087,8086,8042)); // bool(true) 
+1

Plz обратите внимание на правильную версию PHP для вашего ответа! thnx – JustOnUnderMillions

+1

Да, этот ответ помог мне. Спасибо. –

0

print_r функция будет выводить ключи. даже если вы используете array_values, массив все еще имеет индексы в качестве ключей.

Просто вывести массив вручную с помощью echo и implode (Implode присоединится массив значений в одну строку, используя первый символ параметра):

echo implode(',', $newList); 
+0

Я не думаю, что он хочет строку. Я считаю, что он уже имеет правильный результат. Кажется, что hes запутались в клавишах, показанных при использовании 'print_r' – CodeGodie

+0

@CodeGodie, может быть, его вопрос был« display without key », поэтому, я думаю, он хотел отобразить его, если он не исправит свой вопрос. –

+0

@RonDadon извините, если я ошибаюсь в своем вопросе. Я просто хотел массив, но implode сделает его строковым. –

1

Массивы всегда будет иметь ключи. Если вы хотите массив, вы можете получить все значения, превратить их в одну строку, разделенные запятыми, и поместить это в массив:

$productIds = [implode(',', array_column($myList, 'product_id'))]; 
var_dump($productIds); 

// RESULT: 
// array (size=1) 
// 0 => string '8085,8087,8086,8042' (length=19) 
+1

Спасибо, что предложили мне правильный путь. –

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