PHP-按给定值进行多维数组过滤
这是我当前的数组。我只想按电话号码筛选应答状态。PHP-按给定值进行多维数组过滤,php,arrays,Php,Arrays,这是我当前的数组。我只想按电话号码筛选应答状态。 Output将如下所示: Array ( [01755677011] => Array ( [0] => Array ( [0] => 1 [id] => 1 [1] => 01755677011 [phone_num] => 01755677011
Output将如下所示:
Array (
[01755677011] => Array (
[0] => Array (
[0] => 1
[id] => 1
[1] => 01755677011
[phone_num] => 01755677011
[2] => NoAnswer
[status] => Answer
)
[1] => Array (
[0] => 2
[id] => 2
[1] => 01755677011
[phone_num] => 01755677011
[2] => NoAnswer
[status] => NoAnswer
)
[2] => Array (
[0] => 3
[id] => 3
[1] => 01755677011
[phone_num] => 01755677011
[2] => Answer
[status] => NoAnswer
)
[3] => Array (
[0] => 4
[id] => 4
[1] => 01755677011
[phone_num] => 01755677011
[2] => Answer
[status] => Answer
)
)
[01755677012] => Array (
[0] => Array (
[0] => 16
[id] => 16
[1] => 01755677012
[phone_num] => 01755677012
[2] =>No Answer
[status] => NoAnswer
)
[1] => Array (
[0] => 18
[id] => 18
[1] => 01755677012
[phone_num] => 01755677012
[2] => Answer
[status] => Answer
)
)
)
有人能帮我吗?我不明白01755677011怎么能得到0,23。如果您正在显示phone_num及其“应答”状态的次数,您可以通过以下方式执行此操作:
Phone Num No of answer
01755677011 0,23
01755677012 1
$result=array();
foreach($numas$key=>$row){
$result[$key]=array();
$count=0;
foreach($key\u value=>$row\u value的行){
如果($row_值['status']=='Answer'){
//$key是键01755677011和01755677012
$result[$key]['id'][$count]=$row_值['id'];
$count++;
}
}
}
如果(!空($result)){
回显“电话号码|应答号
”;
foreach($key=>$row的结果){
echo$key.“.count($row['id'])。”
;
}
}
第二版:
1) 基于[status]或[2]中的“Answer”
2) 显示对应电话号码的数组索引
$result = array();
foreach ($num as $key => $row) {
$result[$key] = array();
$count = 0;
foreach($row as $key_value => $row_value) {
if ($row_value['status'] == 'Answer') {
// $key is the key 01755677011 and 01755677012
$result[$key]['id'][$count] = $row_value['id'];
$count++;
}
}
}
if (!empty($result)) {
echo "Phone Num | No of answer<br />";
foreach ($result as $key => $row) {
echo $key . " " . count($row['id']) . "<br />";
}
}
$result=array();
foreach($numas$key=>$row){
$result[$key]=array();
$count=0;
foreach($key\u value=>$row\u value的行){
如果($row_值['2']='Answer'.$row_值['status']=='Answer'){
//$key是键01755677011和01755677012
$result[$key][$count]['index']=$key\u值;
$count++;
}
}
}
打印(结果);
如果(!空($result)){
回显“电话号码|应答号
”;
foreach($key=>$row的结果){
echo$key.“|”;
如果(!空($row)){
foreach($data\u key=>$data行){
echo$数据[‘索引’];
}
}否则{
回声“无记录”;
}
回声“
”;
}
}
您如何在所需输出中不获取任何答案列值?我在您的输入数组$qry\u num\u fetch=“SELECT*FROM phnno\u tbl”中看不到任何类型的值;$exc\u qry=mysqli\u查询($conn,$qry\u num\u fetch);而($row=mysqli_fetch_数组($exc_qry)){$num[]=$row;}$result=array();foreach($num作为$element){$result[$element['phone_num']][]=$element;$res[$element['phone_num']]]=$element;}foreach($res作为$key=>$values){$number[]=$key;}//print\r($result[$number][0]['status']);打印(结果);实际上是我的查询结果数据。我想通过应答过滤这个数组,最后通过电话号码输出应答组的键。我仍然不明白如何获得“应答号”值,这是“状态”=应答/NoAnswer的函数吗?实际上我想要关于电话号码的应答时间号。如果我们看到数组,我们可以看到01755677011-总回答时间为3。先是0无钥匙,然后是2无钥匙,最后是3无钥匙。这意味着这个(01755677011)num已经回答了第一次、第三次和第四次。所以最后我想得到结果,它被回答了多少次,以及在没有回答之后什么时候被回答。我只是想知道关于电话号码的答案。我还是不明白。01755677011有4次尝试。我不知道3是从哪里来的。除非您正在查看数组索引,如[01755677011][0]、[01755677011][2]、[01755677011][3]?并且当您说“已回答”时,它是指[status]还是也指“[2]=>Answer”?如果您的观点正确,我已经更新了建议的答案-您正在[status]和[2]中寻找“Answer”,并且希望显示数组索引。
$result = array();
foreach ($num as $key => $row) {
$result[$key] = array();
$count = 0;
foreach($row as $key_value => $row_value) {
if ($row_value['2'] == 'Answer' || $row_value['status'] == 'Answer') {
// $key is the key 01755677011 and 01755677012
$result[$key][$count]['index'] = $key_value;
$count++;
}
}
}
print_r($result);
if (!empty($result)) {
echo "Phone Num | No of answer<br />";
foreach ($result as $key => $row) {
echo $key . " | ";
if (!empty($row)) {
foreach ($row as $data_key => $data) {
echo $data['index'];
}
} else {
echo "No record";
}
echo "<br />";
}
}