Я использую инструмент mikealmond для анализа PHP API MusicBrainz (имеется документация here). Я сталкиваюсь с такой простой проблемой, что не могу понять, что я делаю неправильно. Я пытаюсь восстановить все записи для данного исполнителя (Дэвид Гетта для моих тестов).Предотвращение наличия нескольких раз в том же массиве в php
Вот код:
public function getRecordingsWithArtistMbdi() {
$arrayRecordings = array();
$includes = array('artist-credits', 'tags');
try {
$recordings = $this->mb->browseRecording('artist', '302bd7b9-d012-4360-897a-93b00c855680', $includes);
$countRecordings = $recordings['recording-count'];
foreach ($recordings['recordings'] as $recording) {
if (!in_array($recording['id'], $arrayRecordings)) {
$record = array(
'titre' => isset($recording['title']) ? $recording['title'] : null,
'duree' => isset($recording['length']) ? $recording['length'] : null,
'tags' => isset($recording['tags']) ? $recording['tags'] : null,
'artist-credit' => isset($recording['artist-credit']) ? $recording['artist-credit'] : null
);
$arrayRecordings[$recording['id']] = $record;
}
var_dump($arrayRecordings);
}
} catch (Exception $e) {
print $e->getMessage();
}
}
А вот начало того, что я получаю в результате var_dump
:
array (size=1)
'11329ba1-2645-4bbb-92ae-b2929188d51c' => // Ok, it is saved now
array (size=4)
'titre' => string 'ACDC' (length=4)
'duree' => int 241786
'tags' =>
array (size=1)
0 =>
array (size=2)
...
'artist-credit' =>
array (size=1)
0 =>
array (size=3)
...
array (size=2)
'11329ba1-2645-4bbb-92ae-b2929188d51c' => // Double information
array (size=4)
'titre' => string 'ACDC' (length=4)
'duree' => int 241786
'tags' =>
array (size=1)
0 =>
array (size=2)
...
'artist-credit' =>
array (size=1)
0 =>
array (size=3)
...
'124c53b9-6cc5-4f46-a811-598e8f2947fb' =>
array (size=4)
'titre' => string 'Baby When the Light' (length=19)
'duree' => null
'tags' =>
array (size=0)
empty
'artist-credit' =>
array (size=1)
0 =>
array (size=3)
...
Как вы можете видеть, первый массив записывается, но, несмотря на if (!in_array($recording['id'], $arrayRecordings)) {
, узнано каждый раз. Как решить эту проблему с помощью моего текущего кода?
Это чистая проблема с php, проблема заключается не в анализе API!
вместо 'in_array' я бы просто использовать' Исеть ($ arrayRecordings [$ запись [ «ID»]]) ', почему цикл по массиву, когда вы можете проверить точный пункт – slash197
@ slash197: Тот же результат – Zl3n
Что вы имеете в виду двойную информацию? Вы сбрасываете один и тот же массив дважды. В первом цикле запись, добавленная в массив и массив, отображается с 1 элементом. Во втором цикле добавляется еще одна запись, и в массиве теперь есть 2 (уникальных) элемента. См. Также ответ Жасни (жирная линия). – Barry