省略 PHP 三元和空合并运算符中的 “else”

我正在阅读并尝试PHP中的三元和空合并运算符。


所以,而不是写作


if (isset($array['array_key']))

{

    $another_array[0]['another_array_key'] = $array['array_key'];

}

else

{

    // Do some code here...

}

而不是用空合并或三元运算符缩短它,我试图用空合并进一步缩短代码,但没有“else”部分,因为我并不真正需要。我搜索了它,发现了一些不是我想要的解决方案。


我试过了这个,两个解决方案都有效!


$another_array[0]['another_array_key'] = $array['array_key'] ??

$another_array[0]['another_array_key'] = $array['array_key'] ? :


print_r($another_array);

注意没有 ;在上面一行的末尾。


我的问题是:这是一段可以接受的代码吗?我认为可能很难用评论来解释它,因为它在一段时间后可能会成为可读性的负担。


抱歉,如果这是一个类似的问题 - 我真的没有时间检查它们,因为Stack Overflow建议了很多。


这将是一个“完整”的代码示例:


<?php


$another_array = [];


$array = [

    'name' => 'Ivan The Terrible',

    'mobile' => '1234567890',

    'email' => 'tester@test.com'

];


if (isset($array['name']))

{

    $another_array[0]['full_name'] = $array['name'];

}



$another_array[0]['occupation'] = $array['occupation'] ??

// or $another_array[0]['occupation'] = $array['occupation'] ? :


print_r($another_array);


守着星空守着你
浏览 96回答 1
1回答

芜湖不芜

可重用性、可维护性...如果你想测试许多可能的数组键,然后将它们添加到最终数组中,没有什么能阻止你创建一个第三个数组,它将保存键以检查并循环通过它:<?php$another_array = [];$array = [&nbsp; &nbsp; 'name' => 'Ivan The Terrible',&nbsp; &nbsp; 'mobile' => '1234567890',&nbsp; &nbsp; 'email' => 'tester@test.com'];$keysToCheck = [&nbsp; &nbsp; // key_in_the_source_array => key_in_the_target&nbsp; &nbsp; 'name' => 'full_name',&nbsp; &nbsp; 'occupation' => 'occupation'&nbsp; &nbsp; // if you want to test more keys, just add them there];foreach ($keysToCheck as $source => $target){&nbsp; &nbsp; if (isset($array[$source]))&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$another_array[0][$target] = $array[$source];&nbsp; &nbsp; }}print_r($another_array);请注意:$another_array[0]['occupation'] = $array['occupation'] ??print_r($another_array);评估为$another_array[0]['occupation'] = $array['occupation'] ?? print_r($another_array);如果你在后面添加另一个,你会注意到,由于print_r()的返回值print_r($another_array);$another_array[0]['occupation'] => true
打开App,查看更多内容
随时随地看视频慕课网APP