如何使用PHP在多维数组中获取特定值?

时间:2011-12-07 02:08:55

标签: php mysql

我有一个这样的数组:

  pnotifyArr[] = array( 
    "type" => "New ".$RowP[0]."</br>",
    "title" => "<a href=\"/sys/mailbox/MailInbox.php?ID=$RowP[3]$rid\" onclick=\"javascript:update_status('$RefID')\" target=\"_blank\">".$TitleForShow."</a></br>", 
    "AssignedBy" => "From: ".trim($RowP[2]).".", 
    "RefID"=>$RefID, 
    "Status"=>$Status, 
    "Notice_type" => $TypeN, 
    "Notice_title" => $TitleForShow, 
    "Notice_AssignedBy" => $RowP[2]
  );

从数据库中检索。但我只需要在所有实例中比较Notice_typeNotice_title的键值。

if(count($pnotifyArr)>0)
    {
        $rows   = sizeof($pnotifyArr);
        $columns = sizeof($pnotifyArr[0]);
        //$columnkeys = array_key_exists('Notice_type',$pnotifyArr[0]);


        for ($i =0; $i < $columns; $i++)
        {
            for ($j =0; $j < $rows; $j++)
            {
                for($k = $j+1; $k < $rows; $k++)
                {
                    if( $pnotifyArr[$j][$columnkeys[$i]] ==  $pnotifyArr[$k][$columnkeys[$i]]) //&& ($pnotifyArr[$j][$columnkeys[$i]] ==  $pnotifyArr[$k][$columnkeys[$i]]) )
                    $pnotifyArr[$k][$columnkeys[$i]] = "";
                }
            }
        }
}

我不知道如何递归获取这两个特定键的值。任何人都可以帮我解决这个问题吗?

上面的代码为我提供了所有在我的情况下不需要的关键值。

非常感谢您花时间。

for ($i =0; $i < $columns; $i++)
        {
            for ($j =0; $j < $rows; $j++)
            {
                for($k = $j+1; $k < $rows; $k++)
                {
                    //if( $pnotifyArr[$j][$typekeys[$i]] ==  $pnotifyArr[$k][$typekeys[$i]]) && ($pnotifyArr[$j][$titlekeys[$i]] ==  $pnotifyArr[$k][$titlekeys[$i]]) )
                    if( $pnotifyArr[$j]['Notice_type'] ==  $pnotifyArr[$k]['Notice_type']  && $pnotifyArr[$j]['Notice_title'] ==  $pnotifyArr[$k]['Notice_title'] )

                         $pnotifyArr[$k][$i] = "";


                }
            }
        }

我的输出显示如下........如下

for ($i =0; $i < $columns; $i++)
        {
            for ($j =0; $j < $rows; $j++)
            {
                for($k = $j+1; $k < $rows; $k++)
                {
                    //if( $pnotifyArr[$j][$typekeys[$i]] ==  $pnotifyArr[$k][$typekeys[$i]]) && ($pnotifyArr[$j][$titlekeys[$i]] ==  $pnotifyArr[$k][$titlekeys[$i]]) )
                    if( $pnotifyArr[$j]['Notice_type'] ==  $pnotifyArr[$k]['Notice_type']  && $pnotifyArr[$j]['Notice_title'] ==  $pnotifyArr[$k]['Notice_title'] )
                        {
                         $pnotifyArr[$k][$i] = "";
                        }                               
                }
            }
        }
        foreach ($pnotifyArr as $key => $value) {
            if ($value="") {
                unset($pnotifyArr[$key]);
            }
        } 
        $pnotifyArr = array_values($pnotifyArr); 

请帮助我......我不明白这里发生了什么......

输出:

  

测试:{ “pnotify”:[   {“type”:“New Mail&lt; / br&gt;”,“title”:“RE:Hello&lt; / a&gt;&lt; / br&gt;”,“AssignedBy”:“From:SAMANTHA CHUA PEIXUAN。”,“RefID”: “1fbc490c47ae00967623bf93f92b9262”,“Status”:“1”,“Notice_type”:“Mail”,“Notice_title”:“RE:Hello”,“Notice_AssignedBy”:“SAMANTHA CHUA PEIXUAN”},

     

{“type”:“New Mail&lt; / br&gt;”,“title”:“RE:Hello&lt; / a&gt;&lt; / br&gt;”,“AssignedBy”:“From:SAMANTHA CHUA PEIXUAN。”,“ RefID“:”ead077c279a7cfdf60882fcc75a8f23b“,”Status“:”1“,”Notice_type“:”Mail“,”Notice_title“:”RE:Hello“,”Notice_AssignedBy“:”SAMANTHA CHUA PEIXUAN“,”0“:”“, “1”: “”, “2”: “”, “3”: “”, “4”: “”, “5”: “”, “6”: “”, “7”: “”}] }

3 个答案:

答案 0 :(得分:1)

获取循环中的特定值:

$pnotifyArr[$j]['Notice_type'];

$pnotifyArr[$k]['Notice_title'];

示例:

foreach($pnotifyArr as $key=>$val)
{
 if($pnotifyArr[$key]['Notice_type'] == $pnotifyArr[$key]['Notice_title'])
 {
    $pnotifyArr[$key][XXX] = '';
 }
}

删除空键:

foreach($pnotifyArr as $key=>$val)
{
 if($pnotifyArr[$key]['Notice_type'] == $pnotifyArr[$key]['Notice_title'])
 {
    $pnotifyArr[$key][XXX] = '';
 }

 if (is_null($val)) 
 {
   unset($pnotifyArr[$key]);
 } 
}

然后尝试print_r print_r($pnotifyArr);

答案 1 :(得分:1)

function array_uniquecolumn($ arr)         {             $ temp_array = array();             $ temp_array1 = array();             $ final_array = array();

        foreach ($arr as $key => $value) {
            $temp_array[] = $value["Notice_type"].$value["Notice_title"];
        }
        //print_r ($temp_array);

        $temp_array = array_unique($temp_array);
        $temp_array1 = array_keys($temp_array);
        //print_r ($temp_array1);

        foreach ($temp_array1 as $key => $value) {
            $final_array[] = $arr[$value];
        }
        return ($final_array);
    }

    //print_r( array_uniquecolumn($pnotifyArr));

我从这个功能中得到了完美的结果......

答案 2 :(得分:0)

foreach($pnotifyArr as $child_array) {
    echo $child_array['Notice_type'];
    echo $child_array['Notice_title'];
}