搜索关联的数组数组。怎么样?

时间:2017-08-09 23:56:24

标签: php arrays

我的问题是如何搜索以这种方式构建的数组?基本上可能需要重复密钥,这是我到目前为止所能解决的问题。如果两个不同的项目的价格相同,我不能有2个具有相同价值的键。

请随意改进阵列布局。

$price_list = array(
  1 => array("9.99", "EA_WTRESRVD"),
  2 => array("9.99", "EA_WTRESRV")
);

3 个答案:

答案 0 :(得分:2)

如果第二列永远不会有任何重复,您可以这样做:

$search = "EA_WTRESRVD"; //value to search for

$price_list = array(
  1 => array("9.99", "EA_WTRESRVD"),
  2 => array("9.99", "EA_WTRESRV")
);

$array = array_column($price_list, 0, 1);
echo $array[$search];

答案 1 :(得分:2)

我建议如果你有一个独特的产品代码(SKU),你应该使用它来索引你的数组。

$products = [
    'EA_WTRESRVD' => [
        'name'  => '...',
        'price' => 9.99,
        // ...
    ],
    'EA_WTRESRV' => [
        'name'  => '...',
        'price' => 9.99,
        // ...
    ],
];

然后您可以通过它的SKU访问任何产品的价格。

$price = $products['EA_WTRESRV']['price'];

答案 2 :(得分:1)

以这种方式:

<?php

$price_list = [  1 => array("9.99", "EA_WTRESRVD"),
                 2 => array("9.99", "EA_WTRESRV")];

$search = "EA_WTRESRV";


foreach ($price_list as $arr) {
  if (in_array( $search, $arr )) {
        echo $search;
  }
}

foreach迭代多维数组,其元素是每个数组。每个数组都由in_array()检查搜索词。

但是,这不是唯一的方法。如果你想避免使用in_array(),你也可以编写如下代码:

<?php

$price_list = [  1 => array("9.99", "EA_WTRESRVD"),
                 2 => array("9.99", "EA_WTRESRV")];

$search = "EA_WTRESRV";
$len = strlen($search);


foreach ($price_list as $arr) {
  $val = array_values($arr);

  foreach($val as $v) {
     if ( ( strpos( $v,$search )) !== false) {
        if ( strlen($v) == $len) {
             echo "$search is in the price list.\n";
        }
     }
  }
}