shobana
shobana

Reputation: 67

How do i get a specific value in a multidimensional array using php?

I have an array like this:

  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]
  );

which is retrieved from the database. But I need only the key values of Notice_type and Notice_title to be compared in all the instances.

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]] = "";
                }
            }
        }
}

I don't know how to get the values of these two specific keys recursively. Can anyone help me regarding this issue?

The above code gets me all the key values any which is not required in my case.

Thanks a lot for spending your time.

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] = "";


                }
            }
        }

My output shows something like this........ as below

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); 

Please help me.... I dont understand Whats happening here......

Output:

test:{"pnotify":[ {"type":"New Mail</br>","title":"RE: Hello</a></br>","AssignedBy":"From: SAMANTHA CHUA PEIXUAN.","RefID":"1fbc490c47ae00967623bf93f92b9262","Status":"1","Notice_type":"Mail","Notice_title":"RE: Hello","Notice_AssignedBy":"SAMANTHA CHUA PEIXUAN"},

{"type":"New Mail</br>","title":"RE: Hello</a></br>","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":""}]}

Upvotes: 2

Views: 152

Answers (3)

shobana
shobana

Reputation: 67

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));

I get perfect result from this function......

Upvotes: 1

Zul
Zul

Reputation: 3608

To get specific value in looping:

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

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

example:

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

To Remove Empty Key:

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

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

Then try print_r print_r($pnotifyArr);

Upvotes: 1

David Nguyen
David Nguyen

Reputation: 8508

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

Upvotes: 0

Related Questions