Aşağıdaki php dizisini ayrıştırmaya çalışıyorum, bir şekilde sonucu alıyorum, ancak beklenen çıktıyı alamadım.Aşağıdaki php dizisini ayrıştırma
Dizisi:
Array (
[0] => Array (
[countNos] => 2
[question_id] => 1
[question] => Is Service Best?
[rating] => 4
)
[1] => Array (
[countNos] => 1
[question_id] => 2
[question] => How much you benifitted?
[rating] => 5
)
[2] => Array (
[countNos] => 1
[question_id] => 2
[question] => How much you benifitted?
[rating] => 2
)
)
Güncel kodu:
Uyarı: Undefined index: yıldız C:
foreach ($ratings as $rating) { if (!in_array($rating['question_id'], $ratingArr)) { $ratingArr[$rating['question_id']]['question_id'] = $rating['question_id']; $ratingArr[$rating['question_id']]['question'] = $rating['question']; } for ($i = 5; $i >= 1; $i--) { if (!in_array($rating['rating'], $ratingArr[$rating['question_id']]['stars'])) { if ($i == $rating['rating']) { $ratingArr[$rating['question_id']]['stars'][$i] = $rating['countNos']; } } } }
Bu alıyorum çıkışı \ xampp \ htdocs \ mibs \ module \ Anket \ src \ Anket \ Servis \ SurveyService.php on line 153
Uyarı: \ xampp \ htdocs \ mibs \ modül \ Araştırması \ src \ Araştırması \ Hizmet \ SurveyService.php hattında 153
Array (
[1] => Array (
[question_id] => 1
[question] => Is Service Best?
[stars] => Array (
[4] => 2
)
)
[2] => Array (
[question_id] => 2
[question] => How much you benifitted?
[stars] => Array (
[5] => 1
[2] => 1
)
)
)
: in_array() parametresi 2 dizi boş C verilen olmasını bekler Ama şu çıktıyı bekliyorum:
Array(
[1] => Array(
[question_id] => 1
[question] => Is Service Best?
[stars] => Array(
[5] => 0
[4] => 2
[3] => 0
[2] => 0
[1] => 0
)
)
[2] => Array(
[question_id] => 2
[question] => How much you benifitted?
[stars] => Array(
[5] => 1
[4] => 0
[3] => 0
[2] => 1
[1] => 0
)
)
)
bu diziyi ben hep bu nasıl kurtulur, ben ayrıştırma am zaman, konunun bu tür yaşıyorum ayrıştırmak nasıl.
Sadece kod inceledik ve döngü için, kullanılan niçin sordum;) Ayrıca 'in_array ($ değerlendirmesi [ 'question_id'], $ ratingArr)' onay durumunda soru kimliği $ ratingArr'da ** değeri ** olarak bulunur, ancak bunu anahtar olarak kullanırsınız, bu yüzden muhtemelen bunu 'isset()' veya sadece 'array_key_exsits()' olarak değiştirmek istersiniz. Ve eğer 'yıldız' alt-dizisindeki tuşların sırası OP için önemliyse, ya diziyi çevirebilir ya da 'array_fill_keys()' – Rizier123
kullanabilirsiniz. Elbette, aslında ne demek 'array_key_exists' idi. – Barmar
Şimdi siparişin önemli olmadığını varsayacağım. – Barmar