Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多维搜索未显示所有结果_Php_Mysql_Arrays_Multidimensional Array - Fatal编程技术网

Php 多维搜索未显示所有结果

Php 多维搜索未显示所有结果,php,mysql,arrays,multidimensional-array,Php,Mysql,Arrays,Multidimensional Array,我有一个多维数组搜索 我的数组看起来像这样 Array ( [0] => Array ( [id] => 1 [location] => 3 [location_fees] => 3 [gross_percentage] => 25 [transaction_percentage] => 0 [

我有一个多维数组搜索

我的数组看起来像这样

Array
(
    [0] => Array
        (
            [id] => 1
            [location] => 3
            [location_fees] => 3
            [gross_percentage] => 25
            [transaction_percentage] => 0
            [user_name] => admin
            [user_id] => 1
            [gross] => yes
            [transaction] => no
        )

    [1] => Array
        (
            [id] => 2
            [location] => 5
            [location_fees] => 5
            [gross_percentage] => 0
            [transaction_percentage] => 24
            [user_name] => admin
            [user_id] => 1
            [gross] => no
            [transaction] => yes
        )

    [2] => Array
        (
            [id] => 3
            [location] => 2
            [location_fees] => 5
            [gross_percentage] => 10
            [transaction_percentage] => 0
            [user_name] => admin
            [user_id] => 1
            [gross] => yes
            [transaction] => no
        )

)
我使用下面的php,我知道它可能会做得更干净或更少的代码,所以如果你有任何想法如何获得相同的结果,我是所有关于学习,我洗耳恭听

下面是我使用的PHP:


    $key = false;
    $search = ['gross' => 'yes'];
    foreach ($results as $k => $v) {
    if ($v['gross'] == $search['gross'] ) {

        $key = $k;

        $location_fees = array_search('yes', array_column($results, 'gross','location_fees'));
        echo  "The location fees: ". $location_fees ." % <br><br>";
     
        $gross_percentage = array_search('yes', array_column($results, 'gross', 'gross_percentage'));
        echo "The gross_percentage is: ".$gross_percentage ."% <br><br>";

    }  else  {

        $tran_perc = array_search('yes', array_column($results, 'transaction', 'transaction_percentage'));
        echo "The locations percentage is: ".$tran_perc ." % <br>";

        $the_loc = array_search('yes', array_column($results, 'transaction', 'location'));
        echo "The location is: ".$the_loc ."  <br>";

        $location_fees = array_search('no', array_column($results, 'gross','location_fees'));
        echo  "The location fees: ". $location_fees ." % <br><br>";

    }
    }

它拒绝显示钥匙1的位置费

奇怪的是,如果我把位置费改成3,它就会出现。但它将不会与数字“5”,这也是位置#

这是否与数字“5”冲突的原因?请注意,键“0”的位置为“3”,位置费为“3”,不会引起任何问题


我已经在这个问题上纠缠了好几个小时了,它可以在0和2键上正常工作,没有任何问题。有什么想法吗?

您遇到这个问题的原因是您调用了
array\u column

array_column($results, 'gross','location_fees')
这会导致
$results
中的
gross
值被
位置\u fees
值重新索引,对于您的数据,这将导致

[3 => 'yes', 5 => 'no', 5 => 'yes']
正如您所看到的,您有两个
5
数字键,这是无效的,因此第二个键覆盖了第一个键,您最终得到

[3 => 'yes', 5 => 'yes']
您对
no
array\u搜索失败,因此不会得到任何结果。无论您在哪里获得复制值,都会遇到此问题

我不知道你为什么要采取这种方法。您似乎已经在
$v
中找到了所需的号码:

$search = ['gross' => 'yes'];
foreach ($results as $k => $v) {
    echo "key $k<br>" . PHP_EOL;
    if ($v['gross'] == $search['gross'] ) {
        $location_fees = $v['location_fees'];
        echo  "The location fees: ". $location_fees ." % <br><br>" . PHP_EOL;
     
        $gross_percentage = $v['gross_percentage'];
        echo "The gross_percentage is: ".$gross_percentage ."% <br><br>" . PHP_EOL;

    }  else  {

        $tran_perc = $v['transaction_percentage'];
        echo "The locations percentage is: ".$tran_perc ." % <br>" . PHP_EOL;

        $the_loc = $v['location'];
        echo "The location is: ".$the_loc ."  <br>" . PHP_EOL;

        $location_fees = $v['location_fees'];
        echo  "The location fees: ". $location_fees ." % <br><br>" . PHP_EOL;
    }
}
$search=['gross'=>'yes'];
foreach($k=>v的结果){
echo“key$k
”。PHP\u EOL; 如果($v['gross']==$search['gross']){ $location_fees=$v['location_fees']; echo“位置费:“.$location\u fees.”%

“.PHP\u EOL; $gross_percentage=$v['gross_percentage']; echo“总百分比为:“.$gross\u percentage.”%

“.PHP\u EOL; }否则{ $tran_perc=$v[“交易百分比]; echo“位置百分比为:“..tran_perc.”%
”.PHP_EOL; $the_loc=$v['location']; echo“位置是:“.$The_loc.”
“.PHP_EOL; $location_fees=$v['location_fees']; echo“位置费:“.$location\u fees.”%

“.PHP\u EOL; } }
输出:

key 0<br>
The location fees: 3 % <br><br>
The gross_percentage is: 25% <br><br>
key 1<br>
The locations percentage is: 24 % <br>
The location is: 5  <br>
The location fees: 5 % <br><br>
key 2<br>
The location fees: 5 % <br><br>
The gross_percentage is: 10% <br><br>
键0
场地费:3%

总百分比为:25%

键1
位置百分比为:24%
位置是:5
场地费:5%

键2
场地费:5%

总百分比为:10%


我在搜索了这个网站后,选择了这条路线,寻求另一个问题的解决方案。我从没想过它是在变量$v中。谢谢你的详细介绍response@DynamiteMedia别担心,我很高兴能帮上忙。我能再问你一个问题吗@nick?```谢谢```
key 0<br>
The location fees: 3 % <br><br>
The gross_percentage is: 25% <br><br>
key 1<br>
The locations percentage is: 24 % <br>
The location is: 5  <br>
The location fees: 5 % <br><br>
key 2<br>
The location fees: 5 % <br><br>
The gross_percentage is: 10% <br><br>