2011-12-30 27 views
14

tôi cần phải tạo một mảng sử dụng một đối tượng sử dụng định dạng khác nhau/cấu trúcXây dựng mảng động trong PHP

tôi có:

$t = object() 
$t > user = object() 
$t > user > 0 (object) name = 'wilson'; 
$t > user > 0 (object) first = 'carl'; 

tôi cần phải nhận được:

$t = array(
name = wilson 
first name = phil 

Đây là những gì Tôi đã thử và nơi tôi bị kẹt

foreach($t as $a) { 
     foreach($a as $l) { 
      $arr[$l->0->name] = $l->0->first; // line 10 
     } 
    } 
    print_r($arr); 

Bây giờ tôi gặp lỗi:

PHP Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' in homework1-a-1.php on line 10

Tôi có thể làm gì để khắc phục sự cố?

+0

Dường như lỗi cú pháp đơn giản. Không thể nhìn thấy dòng 10 nên không có ý tưởng. – Phoenix

+0

tôi đặt dòng 10 trong chỉnh sửa – natalia

+0

thuộc tính đối tượng của mình phải bắt đầu bằng một ký tự. Tuy nhiên, tôi không hiểu, những gì bạn muốn đạt được, bởi vì nó có vẻ, rằng bạn trộn lẫn các đối tượng và mảng một chút. – KingCrunch

Trả lời

18

Câu hỏi của bạn khó hiểu. Đây là những gì tôi hiểu:

Bạn đã điều sau đây:

  • $t, đó là một đối tượng.
  • $t->user, cũng là một đối tượng.
  • $t->user[0]->name = 'wilson'
  • $t->user[0]->first = 'carl'

Bạn nói rằng bạn cần phải nhận được:

  • $t->name = 'wilson'
  • $t->first = 'carl'

Bạn nói 'phil' trong câu hỏi, nhưng cho đối tượng $t không liên quan đến 'phil' vì vậy tôi không biết liệu 'phil' có xuất hiện trong không khí mỏng hay không.

Đây có phải là chế độ xem chính xác của sự cố không? Nếu vậy, bạn cần làm rõ điều này trong câu hỏi. nói rằng $t > user > 0 (object) name không có ý nghĩa gì cả.

Rất tiếc, đây là câu trả lời "", tôi không thể phù hợp với tất cả điều này trong nhận xét. Tôi sẽ xóa nó nếu bạn làm rõ câu hỏi. Hy vọng rằng tôi không phải là người duy nhất bối rối bởi điều này.

+0

cảm ơn, tôi thích giải pháp này – natalia

0
$t = object() 
$t > user = object() 
$t > user > 0 (object) name = 'wilson'; 
$t > user > 0 (object) first = 'carl'; 

Đây không phải là mã PHP hợp lệ. Nếu bạn muốn $t ở định dạng mà bạn hiển thị, chỉ cần làm điều này:

$t = array(
'name' => 'wilson', 
'first name' => 'phil' 
); 

Bây giờ $t là một mảng, với các phím 'name''first name'.

Vòng lặp foreach của bạn không có ý nghĩa gì cả. $t là một mảng gồm hai chuỗi. Lặp lại nó sẽ chỉ cung cấp các giá trị 'wilson''phil'.

EDIT: Giả sử $t được trao cho bạn, sau đó bạn cho vòng lặp sẽ trông như thế này:

foreach($t as $a) { 
     foreach($a as $l) { 
      $arr[$l->{0}->name] = $l->{0}->first; 
     } 
    } 

Bạn không thể làm $l->0. Bạn cần phải bọc 0 vào {}. $l->{0}.

+0

Vấn đề là một bài tập về nhà, đối tượng được đưa ra, xây dựng một mảng từ nó. –

+0

@Truth: Rất tiếc, câu hỏi hơi khó hiểu. Các "mã" cho '$ t' làm cho không có ý nghĩa, tôi không có ý tưởng gì' $ t' trông giống như. Sau đó, anh ta nói anh ta muốn '$ t' trong một định dạng nhất định (mà bạn nói đã được đưa ra), sau đó trong vòng lặp của mình, ông tham khảo' $ arr'. Vì vậy, tôi không chắc chắn những gì anh ta muốn. –

Các vấn đề liên quan