2012-11-24 16 views
-5

當使用此代碼對象轉換爲數組:不同的方式來使用PHP

$array=(array)$yourObject;

$yourObject轉換到索引的陣列的屬性,但如何可以看作一個陣列,這些裝置進行轉換,所述$yourObject是一個索引$array和I echo $array[0]通過對象訪問?!

另一種方式的疑問,請參閱此示例代碼:

<?php 

$var1 = (string) 'a text'; 
$var2 = (array) array('foo', 'bar'); 
$var3 = (object) array("foo" => 1, "bar" => 2); 

//It's OK. 
foreach((array)$var1 as $v) { 
    echo $v."<br>"; 
} 

echo "<hr>"; 

//It's OK. 
foreach((array)$var2 as $v) { 
    echo $v."<br>"; 
} 

echo "<hr>"; 

//It's NOT OK. I want through $var3 in output as an array with one index! 
foreach((array)$var3 as $v) { 
    echo $v."<br>"; 
} 

echo "<hr>"; 

?> 

其他方式:

我想使用的foreach一個變量,但我不知道類型的這一點,我想對於任何類型的變量(字符串,數組,對象,...) 例如,我認爲我必須有這種類型的示例輸出:

輸出爲$ VAR1:

array 
    0 => string 'a text' (length=6) 

輸出爲$ VAR2:

array 
    0 => string 'foo' (length=3) 
    1 => string 'bar' (length=3) 

輸出爲$ VAR3:

array 
    0 => 
    object(stdClass)[1] 
     public 'foo' => int 1 
     public 'bar' => int 2 

而結束時,我確信在foreach返回當前的結果沒有錯誤。

+6

能否請你澄清你的問題?這有點難以理解。 – mc10

+0

'//不好。我想通過$ var3作爲一個數組的索引!「這是什麼意思? – phant0m

+0

我再次編輯了我的問題。 –

回答

2

你的意思是把你的對象包裹在一個數組中嗎?

$array = array($yourObject); 

正如MC10提到的,你可以使用new short array syntax as of PHP 5.4

$array = [$yourObject]; 
+1

或者,在PHP 5.4(?)中,您可以使用'$ array = [$ yourobject];'。 – mc10

+0

不在PHP中沒有。 $陣列=(數組)$ yourObject; is corrent – Popnoodles

+2

@popnoodles什麼? '$ array =(array)$ yourObject;'是完全不同的東西。 – phant0m