2017-08-10 91 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"; 
    }