是否有更简单的方法来更改单个数组值


Is there a simpler way to change a single array value?

我要做的是默认$names数组值为它的并行$urls值,如果$names$_POST[]值为空。(这是基于一个空$_POST[]将返回空的假设,如果我错了,有人请纠正我)。

下面是我的代码:

$urls = array(1 => $_POST['url_1'], 2 => ['url_2'], 3 => $_POST['url_3'], 4 => $_POST['url_4'], 5 => $_POST['url_5']);
$names = array(1 => $_POST['name_1'], 2 => ['name_2'], 3 => $_POST['name_3'], 4 => $_POST['name_4'], 5 => $_POST['name_5']);
if(empty($names[1])) { $names[1] = $_POST['url_1']; }
if(empty($names[2])) { $names[2] = $_POST['url_2']; }
if(empty($names[3])) { $names[3] = $_POST['url_3']; }
if(empty($names[4])) { $names[4] = $_POST['url_4']; }
if(empty($names[5])) { $names[5] = $_POST['url_5']; }

我想过使用foreach()循环,但我真的不知道这将如何工作,因为每个单独的数组值,例如$names[1]必须设置为$urls[1],如果为空。

任何建议,评论或其他信息将非常感谢:)!
for ($i = 1; $i <= 5; $i++) {
    $names[$i] = !empty($_POST['name_' . $i]) ? $_POST['name_' . $i] : $_POST['url_' . $i];
}
for ($i = 1; $i <= 5; $i++) {
    if (empty($names[$i])) {
        $names[$i] = $_POST['url_' . $i];
    }
}

但请记住,您还需要检查$_POST['url_' . $i']是否存在,并使用附加的isset()检查

foreach ($names as $k=>$v){
if(empty($v)){
 $names[$k] =$urls[$k];
// or  $names[$k] = $_POST['url_' . $k'];
}
}
$urls = array(1 => $_POST['url_1'], $_POST['url_2'], $_POST['url_3'], $_POST['url_4'], $_POST['url_5']);
$names = array(1 => $_POST['name_1'], $_POST['name_2'], $_POST['name_3'], $_POST['name_4'], $_POST['name_5']);
for ( $c = 1; $c <= 5; $c++ )
{
  if(empty($names[$c])) 
  { 
    $postKey = 'url_'.$c;
    $names[$c] = $_POST[$postKey]; 
  }
}