Php 关联数组中的变量问题

Php 关联数组中的变量问题,php,arrays,variables,Php,Arrays,Variables,如果用户没有填写字段,我希望使用默认字符串作为关联数组的值。例如“未插入”。如果用户填写字段,则变量应采用用户输入的值。所以我写了这段代码: <?php if (isset($_POST['submit'])){ if (isset($_POST['name'])){ $name =$_POST['name']; } else { $name = "not inserted"; } if (isset($_POST['surname']))

如果用户没有填写字段,我希望使用默认字符串作为关联数组的值。例如“未插入”。如果用户填写字段,则变量应采用用户输入的值。所以我写了这段代码:

<?php
if (isset($_POST['submit'])){
    if (isset($_POST['name'])){
        $name =$_POST['name'];     
} else {
        $name = "not inserted";
}
if (isset($_POST['surname'])){
    $surname =$_POST['surname']; 
} else {
    $surname = "not inserted";
}
if (isset($_POST['job'])) { 
    $job = $_POST['job'];
} else {
   $job = "not inserted";
}
    $data = array('name'=>$name, 'surname'=>$surname, 'job'=>$job);
    print_r($data);
}
?>

<form action="" method="post">

<input type="text" id="name" name="name"/>
<input type="text" id="surname" name="surname"/>
<input type="text" id="job" name="job"/>
<input type="submit" id="submit" name="submit"/>

</form>

拜托,有人能告诉我哪里出了问题吗?谢谢。

空白输入仍然会发布到表单操作页面,即使它们没有内容。因此,如果将所有字段保留为空时
var\u dump($\u POST)
,您将看到如下内容:

array (size=3)
  'name' => string '' (length=0)
  'surname' => string '' (length=0)
  'job' => string '' (length=0)
  ...
它们已设置(即存在),但为空。您可以使用
empty()
函数检查其中是否有值,如下所示:

if (!empty($_POST['name'])) {
    $name = $_POST['name'];
} else {
    $name = "not inserted";
}
if (!empty($_POST['name'])) {
    $name = $_POST['name'];
} else {
    $name = "not inserted";
}
if (!empty($_POST['job'])) {
    $name = $_POST['job'];
} else {
    $name = "not inserted";
}

阅读更多有关
empty
工作原理的信息。

这应该是您想要的工作方式。


除了其他答案之外,为了展示另一种方法,您可以使用三元运算符。这会使它更整洁,但这是一个品味问题

<?php
$name = ! empty($_POST['name']) ? $_POST['name'] : "not inserted";
$surname = ! empty($_POST['surname']) ? $_POST['surname'] : "not inserted";
$job = ! empty($_POST['job']) ? $_POST['job'] : "not inserted";

$data = array('name' => $name, 'surname' => $surname, 'job' => $job);
?>

顺便说一句,您可以进一步重构它,使其成为一个可以重用的函数。通常情况下,该函数会进入另一个文件,该文件将包含在使用表单的文件中。。。不断地

<?php

$name = read_post_value('name', 'not inserted');
$surname = read_post_value('surname', 'not inserted');
$job = read_post_value('job', 'not inserted');

$data = array('name' => $name, 'surname' => $surname, 'job' => $job);

var_dump($_POST); // Debug - Show $_POST contents
var_dump($data);  // Debug - Show $data contents

/**
 * Read a post entry.
 * Assign a default value if it is empty or does not exist
 */
function read_post_value($name, $default_text = '') {
    return ! empty($_POST[$name]) ? $_POST[$name] : $default_text;
}
?>

Try:if(isset($\u POST['name'])和&$\u POST['name']!=”){$name=$\u POST['name'];}否则{$name=“not inserted”;}检查变量是否存在且其值不是
NULL
。提交表单时,
$\u POST['name']
和您检查的其他值存在且不为
NULL
。它们可能是
(空字符串)和函数,可以帮助您检查。好的,我现在明白了。感谢您提供的解决方案,但更感谢您的解释。现在我明白了。
<?php
$name = ! empty($_POST['name']) ? $_POST['name'] : "not inserted";
$surname = ! empty($_POST['surname']) ? $_POST['surname'] : "not inserted";
$job = ! empty($_POST['job']) ? $_POST['job'] : "not inserted";

$data = array('name' => $name, 'surname' => $surname, 'job' => $job);
?>
<?php

$name = read_post_value('name', 'not inserted');
$surname = read_post_value('surname', 'not inserted');
$job = read_post_value('job', 'not inserted');

$data = array('name' => $name, 'surname' => $surname, 'job' => $job);

var_dump($_POST); // Debug - Show $_POST contents
var_dump($data);  // Debug - Show $data contents

/**
 * Read a post entry.
 * Assign a default value if it is empty or does not exist
 */
function read_post_value($name, $default_text = '') {
    return ! empty($_POST[$name]) ? $_POST[$name] : $default_text;
}
?>