在数组PHP中搜索
我想在以下数组中创建一个搜索函数:在数组PHP中搜索,php,arrays,Php,Arrays,我想在以下数组中创建一个搜索函数: array( array("key" => "net_sale", "value" => "NET SALE CRTN"), array("key" => "productive_calls", "value" => "Productive Calls"), array("key" => "drop_size_value", "value" => "DROP SIZE V
array(
array("key" => "net_sale", "value" => "NET SALE CRTN"),
array("key" => "productive_calls", "value" => "Productive Calls"),
array("key" => "drop_size_value", "value" => "DROP SIZE VALUE"),
array("key" => "sku", "value" => "SKU PER BILL"),
array("key" => "net_amount", "value" => "Net Amount"),
array("key" => "drop_size_crtn", "value" => "DROP SIZE CRTN"),
array("key" => "productive_pops", "value" => "PRODUCTIVE POPS"),
array("key" => "scheduled_pops", "value" => "SCHEDULED POPS")
);
此函数将返回搜索的任何键的位置。(例如,对于搜索“净额”,它将返回4)创建一个数组,其中键实际上是键,值是值
$map = array();
for ($i = 0; $i < count($values); $i++) {
$value = $values[$i];
$map[$value['key']] = $i;
}
$net_amount_pos = $map['net_amount'];
$map=array();
对于($i=0;$i
来自
然后你可以直接拔出密钥,而不需要搜索它……我同意关于这个问题的评论,我不认为你目前存储数据的方式是最好的。尽管如此,只需循环遍历每个数组,并检查其中是否包含要搜索的字符串
function search($array,$key_value) {
foreach($array AS $key => $value) {
if($value['key'] == $key_value) return $key;
}
}
echo search($arr,'net_amount'); //$arr contains the array you gave as example
function searchArrays($search){
$return = array();
$data = array(
array("key" => "net_sale", "value" => "NET SALE CRTN"),
array("key" => "productive_calls", "value" => "Productive Calls"),
array("key" => "drop_size_value", "value" => "DROP SIZE VALUE"),
array("key" => "sku", "value" => "SKU PER BILL"),
array("key" => "net_amount", "value" => "Net Amount"),
array("key" => "drop_size_crtn", "value" => "DROP SIZE CRTN"),
array("key" => "productive_pops", "value" => "PRODUCTIVE POPS"),
array("key" => "scheduled_pops", "value" => "SCHEDULED POPS")
);
foreach($data as $k => $v){
if(stristr($v['key'], $search) || stristr($v['value'], $search)){
$return[] = $k;
}
}
return $return;
};
print_r(searchArrays('net'));
这是以下代码:
$test = array(
array("key" => "net_sale", "value" => "NET SALE CRTN"),
array("key" => "productive_calls", "value" => "Productive Calls"),
array("key" => "drop_size_value", "value" => "DROP SIZE VALUE"),
array("key" => "sku", "value" => "SKU PER BILL"),
array("key" => "net_amount", "value" => "Net Amount"),
array("key" => "drop_size_crtn", "value" => "DROP SIZE CRTN"),
array("key" => "productive_pops", "value" => "PRODUCTIVE POPS"),
array("key" => "scheduled_pops", "value" => "SCHEDULED POPS")
);
$index = keyval($test,"net_amount");
echo $index;
function keyval($test,$val)
{
$i = null;
foreach($test as $index=>$t)
{
//echo $t['key'];
if($t['key']==$val){ $i = $index;}
}
return $i;
}
试试这个-
定义函数
function checkPosition($needle, $arrData)
{
$i=0;
foreach($arrData as $data){
if(in_array($needle,$data))
{ return $i; }
$i++;
}
}
echo checkPosition('net_amount',$test);
Output : 4
调用函数-
function checkPosition($needle, $arrData)
{
$i=0;
foreach($arrData as $data){
if(in_array($needle,$data))
{ return $i; }
$i++;
}
}
echo checkPosition('net_amount',$test);
Output : 4
还有一种方法:
$array = array(
array("key" => "net_sale", "value" => "NET SALE CRTN"),
array("key" => "productive_calls", "value" => "Productive Calls"),
array("key" => "drop_size_value", "value" => "DROP SIZE VALUE"),
array("key" => "sku", "value" => "SKU PER BILL"),
array("key" => "net_amount", "value" => "Net Amount"),
array("key" => "drop_size_crtn", "value" => "DROP SIZE CRTN"),
array("key" => "productive_pops", "value" => "PRODUCTIVE POPS"),
array("key" => "scheduled_pops", "value" => "SCHEDULED POPS")
);
function search($term, $array) {
for ($i=0; $i<count($array); $i++) {
if ($array[$i]['key'] == $term) return $i;
}
}
echo search("net_amount", $array);
$array=array(
数组(“键”=>“净销售额”,“值”=>“净销售额CRTN”),
数组(“键”=>“生产性调用”,“值”=>“生产性调用”),
数组(“key”=>“drop\u size\u value”,“value”=>“drop size value”),
数组(“键”=>“sku”,“值”=>“每张账单的sku”),
数组(“键”=>“净额”,“值”=>“净额”),
数组(“键”=>“放置大小”、“值”=>“放置大小”,
数组(“键”=>“生产性持久性有机污染物”,“值”=>“生产性持久性有机污染物”),
数组(“键”=>“计划的弹出窗口”,“值”=>“计划的弹出窗口”)
);
函数搜索($term$array){
对于($i=0;$i$data=array)(
数组(“键”=>“净销售额”,“值”=>“净销售额CRTN”),
数组(“键”=>“生产性调用”,“值”=>“生产性调用”),
数组(“key”=>“drop\u size\u value”,“value”=>“drop size value”),
数组(“键”=>“sku”,“值”=>“每张账单的sku”),
数组(“键”=>“净额”,“值”=>“净额”),
数组(“键”=>“放置大小”、“值”=>“放置大小”,
数组(“键”=>“生产性持久性有机污染物”,“值”=>“生产性持久性有机污染物”),
数组(“键”=>“计划的弹出窗口”,“值”=>“计划的弹出窗口”)
);
$search\u key=“sku”;
对于($count=0;$count听起来不错!您尝试了什么?我在数组中循环搜索,但这不是一种有效的方法。在您的情况下,循环似乎是唯一的选择…顺便说一句,您可能会混淆自己,将每个子数组的第二个键称为“值”,但它仍然只是一个“键”…您正在返回value
key,尽管OP希望将具有该值的数组的编号作为键“key”(如果我理解正确)
$data=array(
array("key" => "net_sale", "value" => "NET SALE CRTN"),
array("key" => "productive_calls", "value" => "Productive Calls"),
array("key" => "drop_size_value", "value" => "DROP SIZE VALUE"),
array("key" => "sku", "value" => "SKU PER BILL"),
array("key" => "net_amount", "value" => "Net Amount"),
array("key" => "drop_size_crtn", "value" => "DROP SIZE CRTN"),
array("key" => "productive_pops", "value" => "PRODUCTIVE POPS"),
array("key" => "scheduled_pops", "value" => "SCHEDULED POPS")
);
$search_key="sku";
for($count=0; $count<=count($data); ++$count)
{
if(strcmp($data[$count]["key"], $search_key)==0)
{
echo $data[$count]["value"];
}
}