Я пытаюсь проверить значение на моей корзине в моем проекте 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";
}
}
Вы должны попробовать что-то вроде этого:
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";
}
Попробуйте использовать 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>";
}
}
Поскольку вам необходимо выполнить две последующие проверки, лучше отфильтровать массив и проверить счетчик результатов. Вот пример того, как сделать это с помощью анонимной (лямбда) функции:
Учитывая, что ваш массив $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'])
для дополнительной безопасности в закрытии
Вы можете использовать приведенный ниже код, который вернет 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';
}
?>
Вы можете проверить это с помощью цикла 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
надеюсь, это поможет вам
Попробуйте это.
$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";
}
Используйте этот код, чтобы получить значения
echo $arrayname['547650d3bfb9bce7ea6d61faf312fa41']['user_id'];
echo arrayname['547650d3bfb9bce7ea6d61faf312fa41']['type'];