如何在多维数组PHP上检查一个值

时间:2017-08-10 13:14:11

标签: php arrays codeigniter

我试图在我的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'并输入=' 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";
      }
    }

7 个答案:

答案 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>";
  } 
}

答案 1 :(得分: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'])是否有额外的安全性

答案 2 :(得分:0)

您可以使用以下代码,该代码将返回与给定条件匹配的@Scheduled(cron = "0 0 8 28-31 * ?") public void yourMethod() { Calendar calendar = Calendar.getInstance(); if (calendar.get(Calendar.DATE) == calendar.getActualMaximum(Calendar.DATE)) { // do something... } } 个结果。当然,您可以返回整个数组或某个值或任何您想要的值。您可以根据需要进行更改和调整:

array

答案 3 :(得分:0)

你可以使用for循环检查这个,它会检查你的数组数据user_id和type是否匹配,如果匹配,那么$ found true和break,如果你想检查其中一个是ok,那么使用{{1}条件

||

希望它会帮助你

答案 4 :(得分: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";
    }

答案 5 :(得分:-2)

使用此代码获取值

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

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

答案 6 :(得分:-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";
}