programing

하나 이상의 어레이가 비어 있으면 merge_array가 null을 반환합니까?

nicegoodjob 2023. 2. 11. 23:27
반응형

하나 이상의 어레이가 비어 있으면 merge_array가 null을 반환합니까?

내가 하고 있는 일을 간단히 설명해 주겠다.

고급 커스텀 필드 플러그인과 함께 워드프레스를 사용하고 있습니다.이것은 php 기반의 질문입니다.왜냐하면,get_field()필드에는 객체 배열이 포함됩니다.

$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 );

여러 어레이를 병합하고 있지만 어레이 중 하나가 비어 있으면 병합 어레이가 완전히 null로 반환됩니다.

질문입니다.merge_array가 null을 반환하는 것을 중지하려면 어떻게 해야 합니까?어레이 중 일부가 비어 있습니다.

어떤 아이디어라도 주셔서 감사합니다.


@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는 배열만 파라미터로 받아들입니다.파라미터 중 하나가 null일 경우 오류가 발생합니다.

경고: array_merge(): 인수 #x가 배열이 아닙니다...

어레이 중 하나가 비어 있으면 이 오류가 발생하지 않습니다.빈 어레이는 어레이입니다.

두 가지 옵션:

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);

PHP 샌드박스

어레이를 Marge 하려면 , 다음의 방법을 사용할 수 있습니다.

$c = (array)$a + (array)$b

언급URL : https://stackoverflow.com/questions/19711491/merge-array-returns-null-if-one-or-more-of-arrays-is-empty

반응형