Well, I'm not sure, but it might be the answer to your problem.
If you have an array, it doesn't mean that you always have the 0, 1 or 10 index available to you! It's no need that someone indexes his/her array by numbers, or even starts from zero. Something like:
$hash = array( "First" => "Hello!", "Whatever!" => "Yup!!");
So, let's go back to your problem:
$otherarray[0] = $array;
$newarray = $otherarray[0];
//Then
echo $newarray; // shows "array" like it should... after all, it is an array.. even if it isnt being used correctly...
//but...
echo $newarray[0]; // shows nothing....
[b]
//and even stranger...
echo $join(':',$newarray); // results in the same output as $join(':',$array);
[/b]
by the first line you're assigning $array to the zero index of $otherarray and then you put $otherarray[0] into $newarray. So, speaking about $array, how're you sure that it has something in it's zero index? maybe it doesn't?
Now you understand that looping through an array by for isn't really a good way, we can always use foreach that doesn't depend on numbers as the indexes of the array.
foreach ($newarray as $key=>$val) {
echo $key . "). " . $val . "<br>\n";
}
Back to the quote, where I made it bold, you said that the join of $newarray is exactly like joining $array, right? What's so strange about that? I think it should be like that! You're using $otherarray[0] as a temporary holder in here, so, what is in $array should go exactly to $newarray, don't you think so?
Also I can't understand what phppenishedpunk wrote. What did you mean by showing your array? Do you have the same problem or just wanted to show what you populated in it?