【问题标题】:How to pass multiple search parameters in array for searching in php [closed]如何在数组中传递多个搜索参数以在php中进行搜索[关闭]
【发布时间】:2015-05-05 05:35:27
【问题描述】:

我正在用 php 编写我的代码,我的数组看起来像这样

$arr=Array
(
[0] => Array
    (
        [Business_name] => 1847(Jumeirah)
        [Business_id] => 1422
        [Business_Locality] => Jumeirah
        [Locality_id] => 2
    )

[1] => Array
    (
        [Business_name] => 1847 Mens Salon(Trade Centre)
        [Business_id] => 42
        [Business_Locality] => Trade Centre
        [Locality_id] => 4
    )

[2] => Array
    (
        [Business_name] => 1847 Mens Salon(Mirdif)
        [Business_id] => 1565
        [Business_Locality] => Mirdif
        [Locality_id] => 28
    )

[3] => Array
    (
        [Business_name] => 1847 Mens Salon(City  Walk)
        [Business_id] => 494
        [Business_Locality] => City  Walk
        [Locality_id] => 77
    )

[4] => Array
    (
        [Business_name] => 1847 Mens Salon(Dubai Marina)
        [Business_id] => 44
        [Business_Locality] => Dubai Marina
        [Locality_id] => 3
    ))

现在,如果我想获取 Locality_id=2 的数据,但如果我想搜索 locality_id=2 和 locality_id=3 的数据。所以当结果集返回时,它应该只有 locality_id=2 和locality_id=3。 我该怎么做。

这是我写到现在的代码

function search($array, $key, $value)
 {
$results = array();

if (is_array($array)) {
    if (isset($array[$key]) && $array[$key] == $value) {
        $results[] = $array;
    }

    foreach ($array as $subarray) {
        $results = array_merge($results, search($subarray, $key, $value));
    }
}

return $results;
   }



   print_r(search($arr, 'Locality_id', '2'));

【问题讨论】:

  • 我不明白你需要什么
  • 所以,这不是免费的编码服务。查看您尝试执行的代码和努力。
  • 到目前为止你已经尝试过什么。展示您为获得更好结果而付出的努力

标签: php arrays


【解决方案1】:

这将帮助您获得结果

$check = array(2,3);
$result_array = array();
$i = 0;
foreach ($arr as $itemKey => $itemValue) {

        if (in_array($itemValue['Locality_id'],$check)) {
            $result_array[$i]['Business_name'] = $itemValue['Business_name'];
            $result_array[$i]['Business_id'] = $itemValue['Business_id'];
            $result_array[$i]['Business_Locality'] = $itemValue['Business_Locality'];
            $result_array[$i]['Locality_id'] = $itemValue['Locality_id'];
        }else{
            continue;
        }
        $i++;
}
print_r($result_array);

输出:

Array ( [0] => Array ( [Business_name] => 1847(Jumeirah) [Business_id] => 1422 [Business_Locality] => Jumeirah [Locality_id] => 2 ) [1] => Array ( [Business_name] => 1847 Mens Salon(Dubai Marina) [Business_id] => 44 [Business_Locality] => Dubai Marina [Locality_id] => 3 ) )

【讨论】:

    【解决方案2】:

    闻起来像作业。但是无所谓。如果我正确理解了您的问题,应该这样做:

    $lookingFor = array(2,3);
    
    foreach($thisArray as $key => $value) {
        foreach($lookingFor as $looking) {
            if(in_array($looking, $value['Locality_id'])) {
                $output[] = $value;
                continue;
            }
        }
    }
    
    print_r($output);
    

    我还没有对此进行测试,我的开发人员已关闭 atm,但它应该可以工作或至少是正确的方向。您应该可以自己调整代码。

    【讨论】:

    • 你说:如果我理解你的问题,。那么,为什么您不先在问题中发表评论?我建议,你可以被否决
    • 原因很简单,我想我明白了。另外,我并不真正关心否决票。我来这里不是为了获得很多名声。我在这里分享我的知识并帮助解决问题。此外,您有时会无缘无故地被否决,因此其他人可以将自己的答案推到首位。
    • 你说:另外,你有时会无缘无故地被否决,因此其他人可以将自己的答案推到最前面。我真的很讨厌这种人,这种行为太疯狂了。
    • 我和你在一起@YUNOWORK,即使我经历过战略性的否决
    • “闻起来像作业” rofl。很高兴在堆栈 oveflow 上看到一些幽默。这条线让我很开心
    猜你喜欢
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2014-03-10
    • 2010-11-15
    • 2016-09-19
    相关资源
    最近更新 更多