@Rolros

Как осуществить поиск по масиву, Взять ключ с переменной и найти масив с таким ключем и вывести только его на экран?

Код выводит кучу масивов. Но мне нужно чтобы я получил тот у которого ключ совпадет с переменной. Но я не знаю как написать условие которое отфильтрует и покажет на экран тот у которого верхний ключ
array(1) {
  [96]=>


Совпадает с переменной
<?php $order_id = 96; ?>

Код который все делает
<?php
           $bd = mysqli_connect("localhost", "111", "222", "333");
           $sql = mysqli_query($bd, "SELECT * FROM oc_order_product") or die(mysqli_error());

          $newArray = [];
           foreach ($sql as $elem) {

             $newArray[$elem["order_id"]] = $elem; // Задал ключ масиву
                 echo '<pre>';
                   var_dump( $newArray);
                  echo '</pre>';
         }
    
     ?>


Что я получил на выходе именя етот код
array(1) {
  [96]=>
  array(10) {
    ["order_product_id"]=>
    string(4) "1656"
    ["order_id"]=>
    string(2) "96"
    ["product_id"]=>
    string(3) "874"
    ["name"]=>
    string(64) "Товар1"
    ["model"]=>
    string(9) "PS1328594"
    ["quantity"]=>
    string(1) "1"
    ["price"]=>
    string(8) "723.0000"
    ["total"]=>
    string(8) "723.0000"
    ["tax"]=>
    string(6) "0.0000"
    ["reward"]=>
    string(1) "0"
  }
}

array(2) {
  [96]=>
  array(10) {
    ["order_product_id"]=>
    string(4) "1656"
    ["order_id"]=>
    string(2) "96"
    ["product_id"]=>
    string(3) "874"
    ["name"]=>
    string(64) "Товар2"
    ["model"]=>
    string(9) "PS1328594"
    ["quantity"]=>
    string(1) "1"
    ["price"]=>
    string(8) "723.0000"
    ["total"]=>
    string(8) "723.0000"
    ["tax"]=>
    string(6) "0.0000"
    ["reward"]=>
    string(1) "0"
  }
  [97]=>
  array(10) {
    ["order_product_id"]=>
    string(4) "1660"
    ["order_id"]=>
    string(2) "97"
    ["product_id"]=>
    string(3) "847"
    ["name"]=>
    string(43) "Товар3"
    ["model"]=>
    string(11) "ЭБП-7000"
    ["quantity"]=>
    string(1) "1"
    ["price"]=>
    string(9) "1808.0000"
    ["total"]=>
    string(9) "1808.0000"
    ["tax"]=>
    string(6) "0.0000"
    ["reward"]=>
    string(1) "0"
  }
}
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
opencartbot
@opencartbot
OpenCart web developer
Если правильно понял ваш вопрос, тогда так:
$order_id = 96;

$bd = mysqli_connect("localhost", "111", "222", "333");
$sql = mysqli_query($bd, "SELECT * FROM oc_order_product") or die(mysqli_error());

foreach ($sql->rows as $elem) {
	if ($elem['order_id'] == $order_id) {
		print_r($elem);
	}
}

Можно еще добавить break внутри цикла, чтобы прерывать цикл, когда будет найдено первое совпадение. Так как, если в заказе было несколько товаров, то в этой выборке вы получите несколько массивов, для каждого товара в заказе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
var_dump($newArray[$order_id]);

Или, можно сразу получить нужный заказ из БД, и ничего не фильтровать!
SELECT * 
  FROM `oc_order_product`
  WHERE `order_id`=96 -- магия!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы