$arr1[] = "Bob Marley";
$arr1[] = "Album1";
$arr1[][] = Song1;
0 => string 'Bob Marley'
1 => string 'Album1'
2 =>
0 => string 'Song1'
我有上面的数组,想要在循环中添加一首新歌,我想要
0 => string 'Bob Marley'
1 => string 'Album1'
2 =>
0 => string 'Song1'
1 => string 'Song2'
我有一个包含专辑的数组(attr:名字,艺术家和一系列歌曲),我的代码如下所示。
foreach ($AlbumsArray as $album) {
if(preg_match("#".$regexx."#i", $album->getArtist()) || preg_match("#".$regexx."#i", $album->getTitle())){
$arrayAlbumFound[] = $album->getArtist();
$arrayAlbumFound[] = $album->getTitle();
$albumFound = true;
}
foreach ($album->getSongsArray() as $songs) {
if(preg_match("#".$regexx."#i", $songs->getName())){
if($albumFound){
$arrayAlbumFound[][count($arrayAlbumFound] = array($songs->getName());
}
else{
$arrayAlbumFound[] = $album->getArtist();
$arrayAlbumFound[] = $album->getTitle();
$arrayAlbumFound[count($arrayAlbumFound][] = $songs->getName();
$albumFound = true;
}
}
}
$albumFound = false;
答案 0 :(得分:0)
简单的解决方案是:
$arr1[] = "Bob Marley";
$arr1[] = "Album1"
$arr1[] = array('Song1', 'Song2', 'Song3');
更复杂的是:
$arr1[] = "Bob Marley"; // element has index 0
$arr1[] = "Album1" // element has index 1
// so next added element will have index `2`
$arr1[2][] = 'Song1';
$arr1[2][] = 'Song2';
$arr1[2][] = 'Song3';
答案 1 :(得分:0)
值必须是数组本身,或者您必须指定第一个维度的键并在第二个维度上使用新的element []运算符:
// with array value:
$arr1[] = "Bob Marley";
$arr1[] = "Album1";
$arr1[] = array("Song1");
// or with key:
$arr1[] = "Bob Marley";
$arr1[] = "Album1";
$arr1[2][] = "Song1'";
获取最高密钥:$arr1[count($arr1)][] = "Song1"
答案 2 :(得分:0)
使用单独的变量收集歌曲,并在存储找到的专辑艺术家和标题之前执行此操作,以便首先知道是否有匹配的歌曲:
foreach ($AlbumsArray as $album) {
$songsFound = [];
foreach ($album->getSongsArray() as $songs) {
if(preg_match("#".$regexx."#i", $songs->getName())){
$songsFound[] = $songs->getName();
}
}
if(count($songsFound) ||
preg_match("#".$regexx."#i", $album->getArtist()) ||
preg_match("#".$regexx."#i", $album->getTitle())){
$arrayAlbumFound[] = $album->getArtist();
$arrayAlbumFound[] = $album->getTitle();
if (count($songsFound)) {
$arrayAlbumFound[] = $songsFound;
}
}
}