0

オブジェクトを配列にプッシュする際に問題が発生しました。

これが私のオブジェクトです

Products Object
(
    [id] => 
    [title] => Titel
    [articlenumber] => Artikelnummer
    [price] => Prijs
    [sale_price] => Sale Prijs
    [description] => Tekst
    [views] => 1
    [brand] => Merk
    [soled] => 0
    [start_date] => 2011-04-21
    [end_date] => 2011-04-28
    [active] => 2
    [sale_text] => Sale Tekst
)

これが私の配列ですすべてを配列にプッシュしようとしました

Array
(
    [0] => title, Titel
    [1] => articlenumber, Artikelnummer
    [2] => price, Prijs
    [3] => sale_price, Sale Prijs
    [4] => description, Tekst
    [5] => views, 1
    [6] => brand, Merk
)

ご覧のとおり、彼が「soled」という項目に到達するとコードが停止します。値が0であるため、停止します。正常に機能する場合は、この値を別の値に設定します。

これがimが使用しているコードです。

            $value = array();

        while (next($Product)) {
            $constant = key($Product);  
            array_push($value, $constant.", ".$Product->$constant);         
            echo $constant."<br>";
        }
4

2 に答える 2

1

この場合、 foreach ループを使用することをお勧めします。

$value = array();
foreach($obj as $key => $val)
{
  array_push($value, sprintf("%s, %s", $key, $val));
}
于 2011-04-06T21:54:39.310 に答える
1

あなたの正確なニーズはわかりませんが、配列への単純なキャストを試す価値があります。

$value = (array) $Product;

cvrrent アプローチの問題は、0 が false に評価されるように思われます。厳密な比較を行うことで、それを修正する必要があると思います。

    $value = array();

    while (next($Product) !== false) {
        $constant = key($Product);  
        array_push($value, $constant.", ".$Product->$constant);         
        echo $constant."<br>";
    }

とにかく、他のforeach答えはおそらくより良いアイデアですが、何らかの理由でwhileループを好む場合は、そのゼロの比較に注意する必要があります。

于 2011-04-06T21:53:57.490 に答える