2017-08-10 42 views
1

我想我在我的笨工程车检查的值,我有这个数组:如何检查多维数组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 
     )  
) 

我需要什么公正,检查内部数组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"; 
     } 
    } 
+0

尝试使用'in_array()'你可以找到更多在这里:https://www.w3schools.com/php/func_array_in_array.asp – Rajan

+0

in_array不能多维数组 –

+0

上使用的没有你想虽然循环你的数组,然后使用'in_array'找到元素 – Rajan

回答

-2

你应该试试这样:

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

使用此代码来获取值

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

echo arrayname['547650d3bfb9bce7ea6d61faf312fa41']['type']; 
+0

据我所知,问题是'547650d3bfb9bce7ea6d61faf312fa41'会动态变化。所以你不能在数组中真正地对它进行硬编码。 –

+0

是的,我不想回显值,我只是想检查是否存在 –

+0

我认为它需要动态检查 –

0

尝试使用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

既然你需要做两次后续检查,如果过滤阵列和检查结果的计数是更好。下面是通过使用匿名(lambda)函数这样的例子:

鉴于你的阵列是$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说明和类型匹配与否,如果匹配,则$发现真实,弄碎,即使您的数组数据要检查两个一个是OK,然后使用||条件

<?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"; 
    }