PHP数组\u如果不为空则合并

PHP数组\u如果不为空则合并,php,arrays,array-combine,Php,Arrays,Array Combine,我只想在值存在时合并数据。例如: // array 1 array:4 [▼ 0 => "qwfd" 1 => "qw2e3" 2 => null 3 => null ] // array 2 array:4 [▼ 0 => "qwef" 1 => "w2" 2 => null 3 => null ] 我需要忽略这两个数组中的2=>和3

我只想在值存在时合并数据。例如:

// array 1
array:4 [▼
  0 => "qwfd"
  1 => "qw2e3"
  2 => null
  3 => null
]
// array 2
array:4 [▼
  0 => "qwef"
  1 => "w2"
  2 => null
  3 => null
]
我需要忽略这两个数组中的
2=>
3=>
,因为它们都是空的

Ps
即使其中一个为空,也需要忽略(示例)

在本例中,数组
1
2=>
有值,但由于数组
2
2=>
没有值。它也不应该合并

我的代码

$names = $request->input('social_media_name'); // array 1
$usernames = $request->input('social_media_username'); // array 2
$newArray = array_combine($names, $usernames);

有什么想法吗?这很简单。循环并检查索引处的值是否为null。如果其中一个是,则跳过它,否则设置键和值对

<?php 

$result = [];

foreach($names as $index => $val){
  if (is_null($val) || is_null($usernames[ $index ]) continue;
  $result[ $val ] = $usernames[ $index ];
}

print_r($result);

使用
array\u filter
筛选出仅当
$name、$username
不为空时返回的数组。或者即使其中一个为null也不能返回

$names=[0=>“qwfd”,1=>“qw2e3”,2=>“我在这里”,3=>null];
$usernames=[0=>“qwef”,1=>“w2”,2=>null,3=>null];
$newArray=array\u combine($names,$usernames);
$newArray=array\u过滤器($newArray,
fn($name,$username)=>!为空($name)且
!is_null($username),数组\u过滤器\u使用\u两者);
回声'
<?php 

$result = [];

foreach($names as $index => $val){
  if (is_null($val) || is_null($usernames[ $index ]) continue;
  $result[ $val ] = $usernames[ $index ];
}

print_r($result);
Array
(
    [qwfd] => qwef
    [qw2e3] => w2
)