Как проверить значение в многомерном массиве Stack Overflow

Я пытаюсь проверить значение на моей корзине в моем проекте codeigniter, у меня есть этот массив:

$cart = Array
(
[547650d3bfb9bce7ea6d61faf312fa41] => Array
(
[id] => 1502369193000
[productid] => Product 1
[qty] => 1
[type] => sales
[user_id] => admin
[rowid] => 547650d3bfb9bce7ea6d61faf312fa41
)

[7473a2e4d2e4150c7de11d201538e179] => Array
(
[id] => 1502369241000
[productid] => SG KENNA
[qty] => 1
[type] => purchase
[user_id] => admin
[rowid] => 7473a2e4d2e4150c7de11d201538e179
)
)

Что мне нужно, просто проверить внутри массива user_id = ‘admin’ и type = ‘sales’.

Это то, что я пытаюсь, но безуспешно

$type = array_search('sales', array_column($cart, 'type'));
$user_id = array_search('admin', array_column($cart, 'user_id'));
if($type AND $user_id){
echo "exist";
} else {
echo "no exist";
}

Обновить:
Я использую такую ​​петлю и до сих пор безуспешно

foreach ($cart as $item) {
if ($item['type'] == "sales" AND $item['user_id'] == "admin") {
echo "exist";
} else {
echo "no exist";
}
}

1

Решение

Вы должны попробовать что-то вроде этого:

foreach($cart as $row) {
if(!empty($row) && !empty($row['type']) && !empty($row['user_id'])) {
if ($row['type'] == 'sales' && $row['user_id'] == 'admin'){
echo "exist";
$found = true;
break;
}
}
}
if(!$found){
echo "no exist";
}
-2

Другие решения

Попробуйте использовать in_array внутри цикла:

$cars = array
(
array("Volvo",22,18),
array("BMW",15,13),
array("Saab",5,2),
array("Land Rover",17,15)
);

foreach ($cars as $key => $value) {

if (in_array("Volvo", $value, TRUE))
{
echo "Match found<br>";
break;

}
else
{
echo "Match not found<br>";
}
}
0

Поскольку вам необходимо выполнить две последующие проверки, лучше отфильтровать массив и проверить счетчик результатов. Вот пример того, как сделать это с помощью анонимной (лямбда) функции:

Учитывая, что ваш массив $arr:

$results = array_filter( $arr, function ($entry) {
return $entry['type'] === 'sales' && $entry['user_id'] === 'admin';
});

тогда вы можете проверить свои $results массив echo count($results) ? 'exists' : 'does not exist';

Редактировать:

Вы также можете проверить isset($entry['type']) && isset($entry['user_id']) для дополнительной безопасности в закрытии

0

Вы можете использовать приведенный ниже код, который вернет array результатов, которые соответствуют заданным условиям. Конечно, вы можете вернуть весь массив или какое-то значение или что угодно. Вы можете изменить и настроить его под свои нужды:

<?php
$array = array(
'547650d3bfb9bce7ea6d61faf312fa41' => array
(
'id' => 1502369193000,
'productid' => 'Product 1',
'qty' => 1,
'type' => 'sales',
'user_id' => 'admin',
'rowid' => '547650d3bfb9bce7ea6d61faf312fa41'
),
'7473a2e4d2e4150c7de11d201538e179' => array
(
'id' => 1502369241000,
'productid' => 'SG KENNA',
'qty' => 1,
'type' => 'purchase',
'user_id' => 'admin',
'rowid' => '7473a2e4d2e4150c7de11d201538e179'
)
);

function searchInArray($array) {
$returnArray = [];
foreach ($array as $key => $val) {
if ($val['user_id'] === 'admin' && $val['type'] === 'sales') {
$returnArray[$key] = $array[$key];
}
}
return $returnArray;
}

print_r(searchInArray($array));
if(isset($array) && !empty($array)) {
echo 'Found';
} else {
echo 'None found';
}
?>
0

Вы можете проверить это с помощью цикла for, он проверит данные вашего массива, что user_id и тип совпадают или нет, если совпадает, то $ found true и break, и если вы хотите проверить, одно из двух в порядке, тогда используйте || состояние

<?php
$cart  = array(
'547650d3bfb9bce7ea6d61faf312fa41' => array
(
'id' => 1502369193000,
'productid' => 'Product 1',
'qty' => 1,
'type' => 'sales',
'user_id' => 'admin',
'rowid' => '547650d3bfb9bce7ea6d61faf312fa41'
),
'7473a2e4d2e4150c7de11d201538e179' => array
(
'id' => 1502369241000,
'productid' => 'SG KENNA',
'qty' => 1,
'type' => 'purchase',
'user_id' => 'admin',
'rowid' => '7473a2e4d2e4150c7de11d201538e179'
)
);

$found = false;
foreach ($cart as $key => $data) {
if ($data['user_id'] == 'admin' && $data['type'] == 'sales') {

$found = true;

}
}

if ($found === false) {
echo 'not found';
} else {
echo 'found';
}

Output is : Found

надеюсь, это поможет вам

0

Попробуйте это.

    $Your_user_id = searchArrayKeyVal("user_id", 'admin', $YourMultidimensionalArray);
$Your_type = searchArrayKeyVal("type", 'sales', $YourMultidimensionalArray);
if ($Your_user_id!==false) {
echo "Found user_id";
} else {
echo "Not Found user_id";
}

if ($Your_type!==false) {
echo "Found type";
} else {
echo "Not Found type";
}
0

Используйте этот код, чтобы получить значения

echo $arrayname['547650d3bfb9bce7ea6d61faf312fa41']['user_id'];

echo arrayname['547650d3bfb9bce7ea6d61faf312fa41']['type'];
-2
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector