Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 412
  • Last Modified:

Problem with Merge 2 array on Key

Hi Experts,

I have 2 huge array with the same lenght. I need your help to merge them become 1 array on key

For Example:
====Array 1====
Array
(
      [1] => 111 // my value1
      [2] => 222 // my value2
);            

====Array 2====
Array
(
      [1] => abcde.jpg //image name1
      [2] => 12345.jpg //image name2
);

And I need to merge them base on the key number to become:

====Array 3====
Array
(
      [1] => Array
            (
                  [0] => 111 // my value1
                  [1] => abcde.jpg //image name1
            );
      [2] => Array
            (
                  [0] => 222 // my value2
                  [1] => 12345.jpg //image name2
            );
);

I have the code below but it got something wrong, so it won't run.
Can anyone help me to fix it ?
<?
if ($_POST['action']=='upload')
	{
	$a = $_POST[position];
		/*Example print_r($a)	
		Array
		(
			[1] => 111
			[2] => 222
		);		
		*/
		
	$b = $_POST[imgfile];
		/*Example print_r($b)	
		Array
		(
			[1] => abcde.jpg
			[2] => 12345.jpg
		);
		*/
 
		$c = array();	
		foreach ($count='0'; $count < sizeof($a); $count++)
		{
		  $c[$count] = array($a[$count]$b[$count]);
		}
		
		echo "<pre>";
		print_r ($c); die();
	}	
?>

Open in new window

0
nguyenhoan
Asked:
nguyenhoan
  • 5
  • 4
1 Solution
 
Ludger PetersCommented:
you can add 2 arrays like the following
<?php
 
/**
 * @author ludjer
 */
$a = array("Value 1","Value 2");
$b = array("Value a1","Value a2");
$c = array($a,$b);
 
echo "<pre>";
print_r ($c); 
die();    
?>

Open in new window

0
 
Ludger PetersCommented:
in your code your error is from foreach, the command you meant to use is
for($count='0'; $count < sizeof($a); $count++) and i think your code would work.

i also showed how your code should be


example of foreach and for loops
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    echo $value."<br \>"; // this will output 1<br \>2<br \>3<br \>4 
    $value = $value * 2;
    echo $value."<br \>"; // this will output 2<br \>4<br \>6<br \>8 
}
// $arr is now array(2, 4, 6, 8)
 
//you where ment to use a for loop command
for ($i = 1; $i <= 10; $i++) {
    echo $i;//this will echo 12345678910
}
?>
 
this is how your code should be
<?
if ($_POST['action']=='upload')
   {
        $a = $_POST[position];
        $b = $_POST[imgfile];
        $c = array($a,$b);   
        echo "<pre>";
        print_r ($c); die();
    }       
?>

Open in new window

0
 
nguyenhoanAuthor Commented:
Oh that's not what I want, sorry =[
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
Ludger PetersCommented:
well then could you tell me exactly what you need to do, do you want to use foreach loop or a for loop

ill try make 2 versions one with for loop and other with foreach loop

hope this works
forloop
<?PHP
if ($_POST['action']=='upload')
        {
        $a = $_POST[position];
                /*Example print_r($a)   
                Array
                (
                        [1] => 111
                        [2] => 222
                );              
                */
                
        $b = $_POST[imgfile];
                /*Example print_r($b)   
                Array
                (
                        [1] => abcde.jpg
                        [2] => 12345.jpg
                );
                */
		$c = array();   
		for($count= 0 ; $count <= sizeof($a); $count++)
		{
		  $c[$count] = array($a[$count],$b[$count]);
		}
        echo "<pre>";
        print_r ($c); die();
        }       
?>
for each loop
<?PHP
if ($_POST['action']=='upload')
        {
        $a = $_POST[position];
                /*Example print_r($a)   
                Array
                (
                        [1] => 111
                        [2] => 222
                );              
                */
                
        $b = $_POST[imgfile];
                /*Example print_r($b)   
                Array
                (
                        [1] => abcde.jpg
                        [2] => 12345.jpg
                );
                */
		$c = array();
		$counter = 1;
		foreach($a as $variable)
		{
		  $c[$counter] = array($a[$counter],$b[$counter]);
		  $counter++;
		}
        echo "<pre>";
        print_r ($c); die();
        }       
?>
?>

Open in new window

0
 
Ludger PetersCommented:
woops just realized 2 problems
a)line 23
for($count= 0 ; $count <= sizeof($a); $count++)
changed to
for($count= 1; $count <= sizeof($a); $count++)

b)line 63
remove ?> its not needed
0
 
nguyenhoanAuthor Commented:
Wow, they are both worth, THANKYOU ALOT, MASTER LUDJER !!!
0
 
nguyenhoanAuthor Commented:
Perfect and Thankyou !
0
 
nguyenhoanAuthor Commented:
Oh, Ludjer, if you can, please countinue helping me in this question:
http://www.experts-exchange.com/index.jsp?qid=24314398 

Its the Part2 of this question ^^
Thankyou.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now