Как переместить ключ индекса массива в новый массив

У меня есть массив данных, как это

 Array(
[0] => stdClass Object
([iditem] => 31702152
[idcolor] => 39 )
[1] => stdClass Object
([iditem] => 31702152
[idcolor] => 38))

Поэтому я хочу поставить каждый idcolor к новой переменной $colorid и результат 38,39,
Я не могу найти ключевое слово или могу получить ссылку на аналогичный вопрос?

1

Решение

Используя реализацию Array и взорваться

$ids = [];
foreach($youarray as $value) {
$ids[] = $value->idcolor;
}

$finalIds = implode(',', $ids);

Использование конкатенации строк и rtrim

$finalIds = '';
foreach($youarray as $value) {
$finalIds = $value->idcolor.',';
}

$finalIds = rtrim($finalIds, ',');
0

Другие решения

Ты можешь использовать array_map какая карта / возврат нового массива, как он был разработан для такого рода работы, предположил это:

// creating array of object
$a = (object) array('iditem' => 31702151,'idcolor' => 38 );
$b = (object) array('iditem' => 31702152,'idcolor' => 39 );
// placing above data to new array container
$ab = array($a,$b);

// callback function
function getData( $obj ) {
return $obj->idcolor;
}

// array_map the array using above callback
$colorid = array_map("getData", $ab );

print_r( $colorid );

Выше код будет производить Array( [0] => 39, [1] => 38 ), Если вы хотите, чтобы это значение непосредственно сохранялось в переменной как одна строка, разделенная запятыми, просто используйте взрываться Функция для этого:

$newStr = implode(',', $colorid );
// which will produce 38,39
1

Так ты хочешь $colorid быть массивом со всеми идентификаторами, если я правильно понимаю, верно?

$colorid = array();

foreach($array as $object)
array_push($colorid, $object->idcolor);
0

Вы можете использовать array_reduce для работы:

<?php

// your data
$data = array(
(object) array('iditem' => 31702152, 'idcolor' => 39),
(object) array('iditem' => 31702152, 'idcolor' => 38),
);

// the code
$output = array_reduce($data, function($carry, $obj) {
if (isset($obj->idcolor)) $carry[] = $obj->idcolor;
return $carry;
}, array());
sort($output); // directly sort the $output variable

$output будет:

array(38, 39);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector