2011-04-06 3 views
0

개체를 배열에 푸시 할 때 문제가 있습니다.배열 푸시 문제

여기에 당신이 그 항목이 "밑창 '에 올 때 내 코드가 정지 볼 수 있듯이 배열

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

에 모든 것을 밀어 tryed 내 배열은 여기 내 객체

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 
) 

입니다 그리고 값이 0이기 때문에 수행합니다.이 값을 다른 값으로 설정하면 정상적으로 작동합니다.

다음은 사용하는 코드입니다.

  $value = array(); 

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

답변

1

정확한 요구 사항을 모르지만 배열에 대한 간단한 캐스트를 시도해보십시오.

$value = (array) $Product; 

cvrrent 접근 방식의 문제점은 0으로 평가되는 것 같습니다. 엄격한 비교는이를 수정해야한다고 생각합니다. 다른 대답에 foreach

$value = array(); 

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

은 어쨌든 아마 더 좋은 생각이지만, 당신이 어떤 이유에 대한 while 루프를 선호하는 경우에 당신은 제로에 비교를 위해 조심해야합니다.

1

이 경우, 더 좋은 생각이 될 수있는 foreach 루프를 사용 :

$value = array(); 
foreach($obj as $key => $val) 
{ 
    array_push($value, sprintf("%s, %s", $key, $val)); 
}