0

I have been trying to code this for a while but I am so confused with multidimensional arrays.

I have simplified it to this:

Consider I already have an array:

$myarray = ("1233","4345","3452");

I would like to push an array, onto this array (to create multidimensional array) at a certain value.

For example, With these two variables:

$eventID = 4345
$photoID = 12

I would want to end up with:

("1233", "4345 => 12", "3452")
2
  • Does really make sense. Try posting your real code Commented Oct 25, 2011 at 6:33
  • Just ending up with the string "4345 => 12" is easy. But is that really what you want? Can you take a step back and explain what the goal is here? Commented Oct 25, 2011 at 6:35

5 Answers 5

4

First, your array needs to be an "associative array". You can create the array in one statement like this:

$myarray = array(
    1233 => "",
    4345 => 12,
    3452 => ""
);

Or one item at a time like this:

$myarray = array();
$myarray[1233] = "";
$myarray[4345] = 12;
$myarray[3452] = "";

This is still one dimensional array. You can go one step further and create a multi-dimensional array like this:

$myarray = array();
$myarray[1233] = "";
$myarray[4345] = array("PhotoID" => 12, "Location" => "Somewhere");
$myarray[3452] = array();
$myarray[3452]["PhotoID"] = 13;
$myarray[3452]["Location"] = "Somewhere else";

See the section on Arrays in PHP manual. It is a very frequently used data structure in PHP and I encourage you to read the section thoroughly.

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

1 Comment

Very nice. Hope you don't mind the slight edit (thought someone might find the link to the manual page useful).
1

In PHP arrays works like that:

$a = array("1233", "4345", "3452");

In the above example, the values, "1233", "4345" and "3452" they have each own an index number. So if you run that code:

$a = array("1233", "4345", "3452");

echo "<pre>";
print_r($a);
echo "</pre>";

you will get that result:

Array
(
    [0] => 1233
    [1] => 4345
    [2] => 3452
)

In that case you can't assign an array on "4345" but on "[1]". So, with that in mind if you have another one array like that :

$b = array("321", "654", "987");

and you like to assign it into position "[1]" then you have to do something like that:

$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");

$a[1] = $b;

TAKE CARE

The above code will replace your value "4345" with the content of the array $b. Now let's try to print out your array:

$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");

$a[1] = $b;

echo "<pre>";
print_r($a);
echo "</pre>";

The result will be that now:

Array
(
    [0] => 1233
    [1] => Array
        (
            [0] => 321
            [1] => 654
            [2] => 987
        )

    [2] => 3452
)

Finaly, if you like to keep both the values "4345" from the array $a and assign an array to that same position into the array $a you have to consider what you like to do with the value "4345"

Some ideas are here:

$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");

$b[] = $a[1];
$a[1] = $b;

echo "<pre>";
print_r($a);
echo "</pre>";

The above code has that result:

Array
(
    [0] => 1233
    [1] => Array
        (
            [0] => 321
            [1] => 654
            [2] => 987
            [3] => 4345
        )

    [2] => 3452
)

Or you can try that:

$a = array("1233", "4345", "3452");
$b = array("321", "654", "987");
$c = array();

$c[] = $a[1];
$c[] = $b; 
$a[1] = $c;

echo "<pre>";
print_r($a);
echo "</pre>";

The above code will have the following result

Array
(
    [0] => 1233
    [1] => Array
        (
            [0] => 4345
            [1] => Array
                (
                    [0] => 321
                    [1] => 654
                    [2] => 987
                )

        )

    [2] => 3452
)

Comments

0

It looks like you want to create an associative array from an existing array. You can try this:

$assoc_array = array_combine($myarray, array_fill(0, count($myarray), null));
$assoc_array['4345'] = 12;

$assoc_array will be filled with null values for all other eventIDs.

Comments

0

This code will produce what you want:

$myarray = array("1233","4345","3452");
print_r($myarray);
$eventID = 4345;
$photoID = 12;

if( in_array( $eventID, $myarray) )
{
    array_diff( $myarray, array($eventID) );
    $myarray[ $eventID] = $photoID;
}

print_r($myarray);

Comments

0

Do you want to create a key value pair? In that case why don't u try

$myarray["4345"]=12;

which will end up and array like

Array ( [0] => 1233 [1] => 4345 [2] => 3452 [4345] => 12 ) 

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.