传递一个空值的数组并计算其中的值。

时间:2013-03-25 04:19:22

标签: php arrays array-merge

我有这个特定的代码,用于检查变量是否为非空(如果它不为空) 它将合并在一个“有”值的数组中。如果它是空的,它将合并在一个数组中,但传递“没有值或任何其他东西,甚至空值”

这是我的代码。

$fb_description_arr[] = ($page_desc != "") ? $page_desc : array();
$fb_share_arr[] = ($share_link != "") ? $share_link : array();
$tweet_arr[] = ($twitter_link != "") ? $twitter_link : array();
$follow_arr[] = ($twitter_follow != "") ? $twitter_follow : array();
$site_link_arr[] = ($site_link != "") ? $site_link : array();

假设 $ page_desc不为空,其值为“这是我”,其余变量为空

$test_arr = array_merge($fb_description_arr, $fb_share_arr, $tweet_arr, $follow_arr, $site_link_arr);
print_r($test_arr);

所以我尝试调试并在其上显示合并的数组。将在下面显示。

数组([0] =>这是我[1] =>数组()[2] =>数组()[3] =>数组()[4] => Array())

所以如果我使用php

中的count()函数来计算它
$total_raffle = count(array_merge($fb_description_arr, $fb_share_arr, $tweet_arr, $follow_arr, $site_link_arr));

显然,它会显示“5”

的输出

我在三元运算符中尝试了哪些解决方案来传递一个不会在count()函数中计算的空值。

  1. 阵列()
  2. “”
  3. 所以我想要的输出是“1”,因为 $ page_desc是唯一有值的变量,其余的没有任何值

    这个东西的解决方案吗?

    帮助将不胜感激。 :)

1 个答案:

答案 0 :(得分:1)

我能为你的问题考虑的最简单的解决方案是远离三元组并使用赋值的副作用将值附加到$ test_arr:

<?php

$page_desc = "This is me";
$share_link = $twitter_link = $twitter_follow = $site_link = '';

if ($page_desc !== "")  {
    $test_arr[] = $fb_description_arr[] = $page_desc;
}

if ($share_link !== "")  {
    $test_arr[] = $fb_share_arr[] = $share_link;
}

if ($twitter_link !== "")  {
    $test_arr[] = $tweet_arr[] = $twitter_link;
}

if ($twitter_follow !== "")  {
    $test_arr[] = $follow_arr[] = $twitter_follow;
}

if ($site_link !== "")  {
    $test_arr[] = $site_link_arr[] = $site_link;
}


var_dump($test_arr, count($test_arr));

(请注意,此代码假定其中包含空数组的一堆变量不是您后期代码期望找到的内容)