У меня есть массив данных, как это
Array(
[0] => stdClass Object
([iditem] => 31702152
[idcolor] => 39 )
[1] => stdClass Object
([iditem] => 31702152
[idcolor] => 38))
Поэтому я хочу поставить каждый idcolor
к новой переменной $colorid
и результат 38,39
,
Я не могу найти ключевое слово или могу получить ссылку на аналогичный вопрос?
$ids = [];
foreach($youarray as $value) {
$ids[] = $value->idcolor;
}
$finalIds = implode(',', $ids);
$finalIds = '';
foreach($youarray as $value) {
$finalIds = $value->idcolor.',';
}
$finalIds = rtrim($finalIds, ',');
Ты можешь использовать 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
Так ты хочешь $colorid
быть массивом со всеми идентификаторами, если я правильно понимаю, верно?
$colorid = array();
foreach($array as $object)
array_push($colorid, $object->idcolor);
Вы можете использовать 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);