Night Ryder
Night Ryder

Reputation: 201

Foreach array in an array Php

I have an array as like this

  Array
 (
[solar] => Array
    (
        [0] => sun
        [1] => moon
    )

[SolarGraph] => Array
    (
        [0] => Array
            (
                [y] => 89
                [url] => sun
            )

        [1] => Array
            (
                [y] => 57
                [url] => moon
            )

    )

  )

but i need the y and url name to be changed as follows:

 Array
 (
[solar] => Array
    (
        [0] => sun
        [1] => moon
    )

[SolarGraph] => Array
    (
        [0] => Array
            (
                [solarvalue] => 89
                [solarname] => sun
            )

        [1] => Array
            (
                [solarvalue] => 57
                [solarname] => moon
            )

    )

  )

I tried to change but i get only one array...heres the code

      foreach($Rows as $key=>$val){

        $aUse[] = $val['rt_solargraph'];

        foreach($aUse as $key => $value)
         {
          $aUser['SolarGraph'][$key]['SolarValue'] = $value[$key]['y'];
          $aUser['SolarGraph'][$key]['SolarName'] = $value[$key]['url'];

         }

      }

Please Help me Fix this as i am new to php and array. i dont know how to iterate the elements from the inside array.

Upvotes: 3

Views: 195

Answers (2)

jameshwart lopez
jameshwart lopez

Reputation: 3131

try this.

<?php 
    $solar = array('sun','moon');

    $SolarGraph  = array(array('y' => 89,'url'=>'sun' ),array('y' => 57,'url'=>'moon' ));

    $Rows  = array('solar'=>$solar, 'SolarGraph'=>$SolarGraph );
    echo '<pre>';

    $newArray = [];
    foreach ($Rows as $key => $value) {


        if($key =='SolarGraph'){

            foreach ($value as $lkey => $finalvalue) {
                 $newArray[$key][$lkey]['solarvalue'] = $finalvalue['y'];
                 $newArray[$key][$lkey]['solarname'] = $finalvalue['url'];  
            }
        }else{
            $newArray[$key] = $value;
        }

    }

     print_r($newArray);

    echo '</pre>';
?>

Upvotes: 2

devpro
devpro

Reputation: 16117

You can use like that:

// initialize array
$newArr = array();
foreach ($yourArr as $key => $value) {
    // if $value is array , you can also add SolarGraph key check.
    if(is_array($value) && $key == 'SolarGraph'){
        foreach ($value as $mykey => $finalVal) {
            // assign values to $newArr
            $newArr[$key][$mykey]['solarvalue'] = $finalVal['y'];
            $newArr[$key][$mykey]['solarname'] = $finalVal['url'];
        }
    }
    else{
        // if not is array store as same
        $newArr[$key] = $value;
    }
}

echo "<pre>";
print_r($newArr);

Result:

Array
(
    [solar] => Array
        (
            [0] => sun
            [1] => moon
        )

    [SolarGraph] => Array
        (
            [0] => Array
                (
                    [solarvalue] => 89
                    [solarname] => sun
                )

            [1] => Array
                (
                    [solarvalue] => 89
                    [solarname] => sun
                )

        )

)

Upvotes: 3

Related Questions