0

変数が空でないかどうかをチェックするこの特定のコードがあります。変数がでない場合は、値が「含まれている」配列にマージされます。空の場合は配列にマージされますが、「null値でも値やその他のものはありません」を渡します

ここに私のコードがあります。

$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がnullでなく、値が「This is me」で、残りの変数がnullであるとします。

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

そこで、マージされた配列をデバッグして表示しようとしました。それは以下に示されます。

配列([0]=>これはme[1] =>配列()[2] =>配列()[3] =>配列()[4] =>配列())

したがって、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. false
  4. ""

$ page_descが値を持つ唯一の変数であり、残りには値がないため、希望する出力は「1」です。

このようなものの解決策はありますか?

助けていただければ幸いです。:)

4

1 に答える 1

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));

(このコードは、空の配列を含む一連の変数が、後のコードで検出されることを期待しているものではないことを前提としていることに注意してください)

于 2013-03-25T04:42:52.660 に答える