我的问题是如何搜索以这种方式构建的数组?基本上可能需要重复密钥,这是我到目前为止所能解决的问题。如果两个不同的项目的价格相同,我不能有2个具有相同价值的键。
请随意改进阵列布局。
$price_list = array(
1 => array("9.99", "EA_WTRESRVD"),
2 => array("9.99", "EA_WTRESRV")
);
答案 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";
}
}
}
}