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>