在数组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"];
    }

}