3

UNIX 日付文字列 ("start-unix-date") を含むフィールドを現在のUNIX 時刻 (この例では "15" に簡略化) と比較して、php 配列をフィルタリングしようとしています。UNIX の日付が将来 (>= 現在より) のアイテムのみを保持したい。

これが私のコードの簡略化されたバージョンです -このフィルタリング方法に基づいています:

$my_array = array(
    array( 'start-date-unix' => '20' ), 
    array( 'start-date-unix'  => '10')
);

$unix_now = 15;

function filter_future($var) {
    return (is_array($var) && $var['start-date-unix'] >= $unix_now)
}

$filtered_array = array_filter($my_array, "filter_future");

var_dump($filtered_array);

期待される結果:

$filtered_array は、「start-date-unix」の値が 20 のアイテムのみを保持する必要があります。

実結果:

そのフィルタは何もせず、すべての値が受け入れられます。$filtered_array にはまだ両方のアイテムが含まれています。

機能するもの:

filter_future で、$unix_now 変数の代わりに数値 (15) を入力すると、期待どおりに機能します。「20」項目のみが保持されます。

したがって、 $unix_now が文字列と整数であることに問題があると思われます。整数であることを強制する多くの方法を試しましたが、何も機能しないようです:(

4

5 に答える 5

0

$unix_now = 15;中に入るfunction filter_future

function filter_future($var) {
    $unix_now = 15;
    return (is_array($var) && $var['start-date-unix'] >= $unix_now);
}

$unix_nowあなたの関数の内側は変数の外側を認識しません$unix_now。したがって、関数内に配置する方が良い

于 2013-09-11T11:43:09.027 に答える