私がやっていることを簡単に説明します。
wordpress 高度なカスタムフィールド プラグインで使用しています。これらのget_field()
フィールドにはオブジェクト配列が含まれているため、これはphpベースの質問です。
$gallery_location = get_field('gallery_location');
$gallery_studio = get_field('gallery_studio');
例えば $gallery_location
ダンプするとこれが返されます...
array(18) {
[0]=>
array(10) {
["id"]=>
int(126)
["alt"]=>
string(0) ""
["title"]=>
string(33) "CBR1000RR STD Supersport 2014 001"
["caption"]=>
string(0) ""
["description"]=>
string(0) ""
["mime_type"]=>
string(10) "image/jpeg"
["url"]=>
string(94) "http://www.example.com/wp/wp-content/uploads/2013/10/CBR1000RR-STD-Supersport-2014-001.jpg"
["width"]=>
int(7360)
["height"]=>
int(4912)
}
... on so fourth
}
次に、merge_arrayを使用して両方のオブジェクトをマージしています...
$gallery_location = get_field('gallery_location');
$gallery_studio = get_field('gallery_studio');
$downloads = array_merge( $gallery_location, $gallery_studio );
複数の配列をマージしていますが、配列の1つが空の場合、これによりマージ配列が完全にnullを返します!
私の質問は、いくつかの配列が空であるときにnullを返すmerge_arrayを停止するにはどうすればよいですか?
アイデアをお寄せいただきありがとうございます。
@zessx
これは私が返すものです...
$gallery_location = get_field( 'gallery_location' );
$gallery_studio = get_field( 'gallery_studio' );
$downloads = array_merge( $gallery_location, $gallery_studio );
var_dump($gallery_location);
var_dump($gallery_studio);
var_dump($downloads);
これらは同じ順序で上記のダンプの結果です...
string(0) ""
array(18) {
[0]=>
array(10) {
["id"]=>
int(126)
["alt"]=>
string(0) ""
["title"]=>
string(33) "CBR1000RR STD Supersport 2014 001"
["caption"]=>
string(0) ""
["description"]=>
string(0) ""
["mime_type"]=>
string(10) "image/jpeg"
["url"]=>
string(94) "http://www.example.com/wp/wp-content/uploads/2013/10/CBR1000RR-STD-Supersport-2014-001.jpg"
["width"]=>
int(7360)
["height"]=>
int(4912)
}
... on so fourth
}
NULL
ご覧のように $downloads
は、nullを返していますが、下の両方のソリューションを使用しようとしても機能しませんか?
array_merge
は、パラメーターとして配列のみを受け入れます。パラメータの1つがnullの場合、エラーが発生します:
警告:array_merge():引数#xは配列ではありません...
配列の1つが空の場合、このエラーは発生しません。空の配列は依然として配列です。
2つのオプション:
1 /型を強制的にarray
にする
$downloads = array_merge( (array)$gallery_location, (array)$gallery_studio );
2 /変数が配列かどうかを確認する
$downloads = array();
if(is_array($gallery_location))
$downloads = array_merge($downloads, $gallery_location);
if(is_array($gallery_studio ))
$downloads = array_merge($downloads, $gallery_studio);
配列をマージするには、次の方法を使用できます。
$c = (array)$a + (array)$b