Получение нуля при извлечении данных из массива PHP в приложении Laravel - PullRequest
0 голосов
/ 07 ноября 2019

Я работаю над набором PHP-массивов. Пытаюсь пройтись по каждому из них и проверить массив, имя которого равно Josw Acade. Я использую для цикла, но я получаю ноль после извлечения данных. Я хочу хранить данные в массиве.

Массив

array:6 [
  0 => array:4 [
    "id" => 1
    "name" => "Josw Acade"
    "value" => "Unlimited"
    "plan_type" => "Superior"
  ]
  1 => array:4 [
    "id" => 2
    "name" => "Verbal"
    "value" => "true"
    "plan_type" => "Superior"
  ]
  2 => array:4 [
    "id" => 12
    "name" => "Josw Acade"
    "value" => "$1,500,00"
    "plan_type" => "Classic"
  ]
  3 => array:4 [
    "id" => 13
    "name" => "Leon"
    "value" => "true"
    "plan_type" => "Classic"
  ]
  4 => array:4 [
    "id" => 14
    "name" => "One Time"
    "value" => "true"
    "plan_type" => "Classic"
  ]
  5 => array:4 [
    "id" => 15
    "name" => "Deat"
    "value" => "$25,000"
    "plan_type" => "Classic"
  ]
  6 => array:4 [
    "id" => 23
    "name" => "Josw Acade"
    "value" => "$100,000"
    "plan_type" => "Essential"
  ]
]

Логика

$Inst = [];
for($med = 0; $med < count($array); $med++){
    if($med['name'] == "Josw Acade"){
        $Inst = $med['value'];
    }
}

dd($Inst);

Ответы [ 4 ]

1 голос
/ 07 ноября 2019

Ваши переменные неправильно заданы в цикле for, вы устанавливаете $med = 0 и используете $med как array.

Использовать фильтр, который запускает условие для каждого элемента и возвращаетпредметы, которые удовлетворяют этому условию.

array_filter($array, function ($item) {
    return $item['name'] === 'Josw Acade';
});

Как правило, вам больше не нужно создавать массивы старой школы, foreach делает то же самое.

$results = [];

foreach($array as $item) 
{
    if ($item['name'] === 'Josw Acade') {
        $results[] = $item['value'];
    }
}
0 голосов
/ 07 ноября 2019

Есть много способов сделать это, но, на мой взгляд, лучший способ использовать array_filer ()

array_filter($array, function ($item) {
    return $item['name'] === 'Josw Acade';
});
0 голосов
/ 07 ноября 2019

Вы перебираете массив;чтобы на каждой итерации получать значения;вам нужно передать значение индекса, и вы пропустите это. Вы используете $med в качестве индекса.

Вот код.

$Inst = [];
for($med = 0; $med < count($array); $med++){
    if($array[$med]['name'] == "Josw Acade"){
        $Inst[] = $array[$med]['value'];
    }
}
0 голосов
/ 07 ноября 2019

Вы можете использовать array_filter с callback

$filtered = array_filter($array, function($v){ return $v['name'] == 'Josw Acade'})
print_r($filtered);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...