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 が文字列と整数であることに問題があると思われます。整数であることを強制する多くの方法を試しましたが、何も機能しないようです:(