Есть ли более простой способ изменить одно значение массива? - PullRequest
1 голос
/ 15 августа 2011

То, что я пытаюсь сделать, по умолчанию значение массива $names равно его параллельному значению $urls, если значение $_POST[] $names пусто.(Это основано на предположении, что пустой $_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], если оно пустое.

Любые советы, комментарииили другая информация будет очень ценится:)!

Ответы [ 4 ]

4 голосов
/ 15 августа 2011
for ($i = 1; $i <= 5; $i++) {
    $names[$i] = !empty($_POST['name_' . $i]) ? $_POST['name_' . $i] : $_POST['url_' . $i];
}
2 голосов
/ 15 августа 2011
foreach ($names as $k=>$v){
if(empty($v)){
 $names[$k] =$urls[$k];
// or  $names[$k] = $_POST['url_' . $k'];
}
}
2 голосов
/ 15 августа 2011
for ($i = 1; $i <= 5; $i++) {
    if (empty($names[$i])) {
        $names[$i] = $_POST['url_' . $i];
    }
}

Но имейте в виду, что вам также необходимо проверить, существует ли $_POST['url_' . $i'] с дополнительной isset() проверкой

0 голосов
/ 15 августа 2011
$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]; 
  }
}
...