Как избежать цикла forech и как мы можем использовать столбец массива - PullRequest
0 голосов
/ 24 мая 2019

У меня есть один массив, в этом массиве у меня есть столбцы price, теперь я хочу сделать так, чтобы цена взятия была равна 5, а также больше 5. Я знаю, что с помощью цикла foreach мы можем достичь этого, любой другой путьтам, чтобы достичь моего ожидаемого ответа?

$mainArray = [
    "key1" => ["name" => "A", "price" => 5],
    "key2" => ["name" => "B", "price" => 7],
    "key3" => ["name" => "C", "price" => 2],
    "key4" => ["name" => "D", "price" => 9]
];

МОЙ КОД

  <?php
$mainArray = [
    "key1" => ["name" => "A", "price" => 5],
    "key2" => ["name" => "B", "price" => 7],
    "key3" => ["name" => "C", "price" => 2],
    "key4" => ["name" => "D", "price" => 9]
];

$maxPrice = 5;
$mainArray = array_filter($mainArray, function($value) {
    return $value['price'] >= $maxPrice;
});


print_r($mainArray);

?>

но я получаю ошибку E_NOTICE : type 8 -- Undefined variable: maxPrice -- at line 11

Ответы [ 2 ]

2 голосов
/ 24 мая 2019

Вы можете использовать array_filter, чтобы проверить, равна или превышает цену 5.

<?php
$mainArray = [
    "key1" => ["name" => "A", "price" => 5],
    "key2" => ["name" => "B", "price" => 7],
    "key3" => ["name" => "C", "price" => 2],
    "key4" => ["name" => "D", "price" => 9]
];

$maxPrice = 5;
$mainArray = array_filter($mainArray, function($value) use ($maxPrice) {
    return $value['price'] >= 5;
});


var_dump($mainArray);
1 голос
/ 24 мая 2019

Попробуйте так:

<?php
$mainArray = [
  "key1" => ["name" => "A", "price" => 5],
  "key2" => ["name" => "B", "price" => 7],
  "key3" => ["name" => "C", "price" => 2],
  "key4" => ["name" => "D", "price" => 9]
];
$min = 5;
$result = array_filter(
  $array_column(mainArray, 'price'),
   function ($value) use($min) {
      return ($value >= $min);
   }
);
...