PHP перечисляет массив и получает значение

#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;
 

Реализуйте свой код, я надеюсь, что это сработает.