0

DOMを使用してhtmlから抽出した配列があります。以下の配列が示すように、私が望まない空のデータがたくさんあります。したがって、配列から空の値を削除しようとしても、削除されません。

Array ( [0] => [1] => Outpost Congratulations13 [2] => [3] => [4] => [5] => [6] =>
 [7] => Yard will reflect the type of work that they do and the strength and variety of their membership, from recent graduates to emerging and mid-career artists. 
[8] => [9] => [10] => [11] => Gallery  Closed Good Friday, open Bank Holiday Monday. Admission Free 
[12] => [13] => K  Yard, Castle Street 
[14] => [15] => Friday 1 Mar 3 [16] => [17] => [18] => [19] => www.somesite.co.uk 
[20] => [21] => [22] => [23] => Map [24] => [25] => Contact the Organiser Tell a Friend about this Event [26] => [27] => Plan Your Journey [28] => [29] => [30] => )

私が試したことすべて:-

  1. array_filter:動作しませんでした。
  2. 値が空かどうかをチェックする多くの関数はまだ機能しませんでした。
  3. strlenを使用して空の文字列の長さを見つけようとしましたが、長さとして22、230が表示されます。
  4. str_replaceを使用して、スペースをntgで置き換えますが、まだ機能していません。stlenは、空の値に対して22、28などを表示しています。
  5. 私はトリムbtを使用していません。

データのstrlenが22以上である理由について誰かが私を助けてくれますか?そして、これらのタイプの要素を配列から削除する方法は?

4

3 に答える 3

3

これはあなたが必要とすることをするはずです:

$array = array(
  'Hello',
  '',
  0,
  NULL,
  FALSE,
  '0',
  '    ',
);

$new_array = array_filter($array, function ($value)
{
    return strlen(trim($value));
}
);

これにより、次のようになります。

Array ( [0] => Hello [2] => 0 [5] => 0 )

array_filter($array)orを使用する際の問題array_filter($array, 'trim')は、文字列/整数0も削除されることですが、これはおそらくあなたが望むものではありませんか?

編集:

PHP < 5.3 を使用している場合は、次を使用します。

function trim_array ($value)
{
    return strlen(trim($value));
}

$new_array = array_filter($array, 'trim_array');
于 2013-03-12T13:22:26.863 に答える
3

データには空の文字列 (22 個のスペースなど) があるため、それらをトリミングする必要があります

$emptyRemoved = array_filter($myArray, 'trim');
于 2013-03-12T13:24:05.617 に答える
0
function array_remove_empty($arr){
    $narr = array();
    while(list($key, $val) = each($arr)){
        if (is_array($val)){
            $val = array_remove_empty($val);
            // does the result array contain anything?
            if (count($val)!=0){
                // yes :)
                $narr[$key] = $val;
            }
        }
        else {
            if (trim($val) != ""){
                $narr[$key] = $val;
            }
        }
    }
    unset($arr);
    return $narr;
}

array_remove_empty(array(1,2,3, '', array(), 4)) => returns array(1,2,3,4)
于 2013-03-12T13:25:19.743 に答える