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;
}
?>