#php #arrays #laravel
#php #массивы #ларавель
Вопрос:
У меня есть некоторые трудности с PHP-массивами. Я пытаюсь получить некоторые значения, упорядочить их с помощью array_multisort и снова получить их, чтобы я мог создать какой-то код. Итак, что я делаю, я передаю объект json как:
"options": [
{"key": "Ships From", "value": "Russia"},
{"key": "Color", "value": "Green"},
{"key": "Size", "value": "M"},
{"key": "Material", "value": "Flex"}
],
Итак, это получено от frontend, и я предупреждаю их следующим образом:
public function findAttribute($product_id, $values)
{
$array = array();
foreach ($values as $key => $value) {
$getAttr = $this->attribute($value['key']);
$getAttrValue = $this->attributeValue($getAttr->id, $value['value']);
$code = $getAttr['label'] . '=' . $getAttrValue['value'];
$collection = array_push($array, array($getAttr->default_order, $code));
}
array_multisort($array, SORT_ASC);
}
Как вы можете видеть, у меня есть $getAttr
and $getAttrValue
, который выбирает значения из базы данных, чтобы получить default_order (целое число), чтобы я мог сортировать их multisort
.
Так что на самом деле этот код работает так, как ожидалось, и когда я пишу (после мультисортировки), как:
foreach($array as $key => $value){
echo $value[1] .'/';
}
У меня есть ожидаемое значение, но когда я вызываю эту функцию, она выдает мне, что она возвращает NULL
, если я изменю echo на return, у меня будет только первый массив. Если я попытаюсь, как
foreach($array as $key => $value){
$code = $value[1] .'/';
}
return $code;
Тоже безрезультатно.
Что мне делать?
Комментарии:
1. Вы смотрели на методы PHP
array_search
?
Ответ №1:
Потому что на каждой итерации вы присваиваете новое значение $code
, поэтому вы получите только последнее $value [1]
в array
(после упорядочения). Если вы хотите вернуть строку, объединяющую все значения, вы можете сделать так:
$code = '';
foreach($array as $key => $value){
$code .= $value[1] .'/';
}
return $code;
Комментарии:
1. @somebodytolove Добро пожаловать! Если вы считаете мой ответ правильным и полезным, пожалуйста, отметьте его как правильный и поддержите его.
Ответ №2:
$code = array();
foreach($array as $key => $value){
$code = $value[$key] .'/';
}
return $code;
Реализуйте свой код, я надеюсь, что это сработает.