1

I have this array

$MyArray[0]=Array("id"=>1,"name"=>prophet,"family"=>muhammad);
$MyArray[1]=Array("id"=>1,"name"=>imam,"family"=>ali);
$MyArray[2]=Array("id"=>1,"name"=>imam,"family"=>hossein);

I want merge only name and family to fullName?

I want like this

$MyArray[0]=Array("id"=>1,"name"=>prophet,"family"=>muhammad,"fullName"=>"prophet muhammad");
$MyArray[1]=Array("id"=>1,"name"=>imam,"family"=>ali,"fullName"=>"imam ali");
$MyArray[2]=Array("id"=>1,"name"=>imam,"family"=>hossein,"fullName"=>"imam hossein");

I can do with this code

$count=0;
foreach($MyArray as $R)
{            
    $result[$count++]=array("name"=>$R["name"],"family"=>$R["family"],"fullName"=>$R["name"]." ".$R["family"]);
}
var_dump($result);

Online Demo

there is better way to do that?

0

4 Answers 4

4

Just assign a new key pair value inside your current array structure. A simple foreach should suffice:

$MyArray[0]=Array("id"=>1,"name"=>"prophet","family"=>"muhammad");
$MyArray[1]=Array("id"=>1,"name"=>"imam","family"=>"ali");
$MyArray[2]=Array("id"=>1,"name"=>"imam","family"=>"hossein");

foreach($MyArray as &$arr) {
                  // ^ reference
    $arr['fullName'] = "{$arr['name']} {$arr['family']}";
    //   ^ new key       ^ new value assignment
}

Sample Output

Sign up to request clarification or add additional context in comments.

Comments

3

You can use array_map() in your code like this:

<?php

$MyArray[0]=Array("id"=>1,"name"=> "prophet", "family"=> "muhammad");
$MyArray[1]=Array("id"=>1,"name"=> "imam", "family"=> "ali");
$MyArray[2]=Array("id"=>1,"name"=> "imam", "family"=> "hossein");

$array = array_map(function($n) {$n['fullName'] = $n['name'] . ' ' . $n['family']; return $n;}, $MyArray);

print_r($array);

Output:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => prophet
            [family] => muhammad
            [fullName] => prophet muhammad
        )

    [1] => Array
        (
            [id] => 1
            [name] => imam
            [family] => ali
            [fullName] => imam ali
        )

    [2] => Array
        (
            [id] => 1
            [name] => imam
            [family] => hossein
            [fullName] => imam hossein
        )

)

Read more at:

http://php.net/array_map

Comments

2
$MyArray[0]=Array("id"=>1,"name"=>prophet,"family"=>muhammad);
$MyArray[1]=Array("id"=>1,"name"=>imam,"family"=>ali);
$MyArray[2]=Array("id"=>1,"name"=>imam,"family"=>hossein);
$count = count($MyArray);
for ($i = 0; $i < $count; $i++) {
    $MyArray[$i]['fullName'] = $MyArray[$i]['name'] . ' ' . $MyArray[$i]['family'];
}
print_r($MyArray);

Comments

2

You can do this by using the foreach loop. Here is an example.

$MyArray[0]=Array("id"=>1,"name"=>prophet,"family"=>muhammad);
$MyArray[1]=Array("id"=>1,"name"=>imam,"family"=>ali);
$MyArray[2]=Array("id"=>1,"name"=>imam,"family"=>hossein);

foreach($MyArray as $key=>$myarray){
     $MyArray[$key]["fullName"] = $myarray["name"]." ".$myarray["family"];
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.