我想知道以下是否可行。我希望下面写的if语句在一行中(三元组)。
我想在cURL数组中使用三元(简写php代码)。
表单数据示例:
$_POST['data'] = 'sometextrighthereisgood:this is what we want"; //user input example.
如果声明:
if(isset($_POST['data']))
{
$string = explode(':', $_POST['data']);
$string = $string[1]; //contains "this is what we want"
}
else
{
$string = NULL;
}
数组示例:
$arr = array('text' => $string); //example for use in the array.
任何想法是否可能?
亲切的问候Alex
答案 0 :(得分:2)
试试这个:
list(,$string) = isset($_POST['data'])
? explode(':', $_POST['data'])
: array(null,null)
;
答案 1 :(得分:1)
:
会发生什么,那么当您尝试从该数组索引读取时,您将获得Undefined index
。
如果您不是100%确定某个值是您所期望的,则需要检查它。你可以做三分检查但值得吗?
<?php
$data = 'sometextrighthereisgood:this is what we want';
if(isset($data)){
$string = explode(':',$data);
$string = isset($string[1]) ? $string[1] : NULL;
}else{
$string = NULL;
}
echo $string; //this is what we want
?>
答案 2 :(得分:0)
您的代码存在一个问题。爆炸后,如果原始字符串中没有“:”,PHP可能会在该行显示通知或错误:
$string = $string[1]
可能未定义$string[1]
。因此,您可以在分配之前进行检查:
$string = (sizeof($string) >= 2 ? $string[1] : null);
其他解决方案,是ignore the notice message:
$string =@ $string[1]
正如zerkms所说,这是一个丑陋的解决方案和一个不好的做法,因为你没有太多的控制(因为它忽略任何级别的错误,注意等)。所以,避免它。
并且,对于if
问题。我个人认为使用您使用的方式非常好,它更清晰,更容易理解。无论如何,使用三元数你可以使用类似的东西:
$string = (isset($_POST['data']) ? explode(':', $_POST['data'], 2) : null);
$string = ($string != null && sizeof($string) >= 2 ? $string[1] : null);