0

This code :

for ($p=0;$p<count($results);$p++){
    foreach ($results[$p] as $k => $v){
        $typeee = ['type' => strtolower(str_replace('_','',$results[$p][$k]['metric']))."container"];
        array_insert2($results[$p],0,$typeee);
    }
}
print_r($results);

gives me this:

Array (
    [0] => Array
        (
            [type] => pagestoriescontainer
            [0] => Array
                (
                    [type] => pagestories
                    [object_id] => 123456778
                    [metric] => page_stories
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 2090
                )

            [1] => Array
                (
                    [type] => pagestorytellers
                    [object_id] => 123456778
                    [metric] => page_storytellers
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 2041
                )


 [...]

[1] => Array
        (

            [0] => Array
                (
                    [type] => pagestories
                    [object_id] => 199193463123456778
                    [metric] => page_stories
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 0
                )

            [1] => Array
                (
                    [type] => pagestorytellers
                    [object_id] => 199193463123456778
                    [metric] => page_storytellers
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 0
                )

   [...]

But this code:

for ($p=0;$p<count($results);$p++){
    foreach ($results[$p] as $k => $v){ 
        $typeee = ['type' => strtolower(str_replace('_','',$results[$p][$k]['metric']))."container"];
        array_insert2($results[$p],$k,$typeee);
    }
}

DOES NOT give me this:

Array (
    [0] => Array
        (
            [type] => pagestoriescontainer
            [0] => Array
                (
                    [type] => pagestories
                    [object_id] => 123456778
                    [metric] => page_stories
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 2090
                )
            [type] => pagestorytellerscontainer
            [1] => Array
                (
                    [type] => pagestorytellers
                    [object_id] => 123456778
                    [metric] => page_storytellers
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 2041
                )


 [...]

[1] => Array
        (
            [type] => pagestoriescontainer
            [0] => Array
                (
                    [type] => pagestories
                    [object_id] => 199193463123456778
                    [metric] => page_stories
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 0
                )
            [type] => pagestorytellerscontainer
            [1] => Array
                (
                    [type] => pagestorytellers
                    [object_id] => 199193463123456778
                    [metric] => page_storytellers
                    [end_time] => 1386057600
                    [period] => 86400
                    [value] => 0
                )

   [...]

Why? How can I get what I want? :)

Also,

function array_insert2 (&$array, $position, $insert_array) {  
    $first_array = array_splice ($array, 0, $position);
    $array = array_merge ($first_array, $insert_array, $array);
}
4
  • PROTIP: When formatting code, use the {} button, not the " button on the toolbar. Commented Dec 12, 2013 at 15:57
  • The array you seem to want doesn't make any sense. You are trying to do: ['type' => '', 0 => [], 'type' => '', 1 => []]. You can't have multiple type keys. Can you try to explain what exactly it is you want? Commented Dec 12, 2013 at 16:02
  • stackoverflow wouldnt let me use {} because I havent written enough "text" in comparison to amount of code. More text != better explained problem (its called waffling). I need to add type to every single level of multidimensional array and convert all numeric indexes to "own".$variable so I can do this: redbeanphp.com/cooker Commented Dec 12, 2013 at 16:43
  • 1
    I still don't understand. Every level already has a type value. Why do you want to add another? Do you want a structure like this: [['type' => '', 'data' => []], ['type' => '', 'data' => []]]? Commented Dec 12, 2013 at 16:47

1 Answer 1

1

array_insert2's second param is the position. In the first code you are actually giving it an integer making it a valid position ( $p, combined with the array_splice function ). In the second piece of code, the position supplied to array_insert2 is the key ( $k ) from the foreach loop on $results[$p]. The key given cannot be used correctly with the array_splice function. Maybe instead of supplying $k, give the array_search result of $k in $results[$p].

short-answer: The position supplied in the second piece of code is not an integer, making it not usable for the array_splice function.

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

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.