25

基本的に、多次元配列があり、それが単に空かどうかを確認する必要があります。

私は現在、ifこれを実行しようとしているステートメントを持っています:

if(!empty($csv_array)) 
{   
    //My code goes here if the array is not empty
}

if statementただし、多次元配列が空であるかどうかにかかわらず、それはアクティブ化されています。

空のときの配列は次のようになります。

Array
(
    [0] => Array
        (
        )

)

これは、いくつかの要素が含まれている場合の配列の外観です。

Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
            [1] => question1
            [2] => answer1
            [3] => answer2
            [4] => answer3
            [5] => answer4
        )

    [2] => Array
        (
            [1] => question2
            [2] => answer1
            [3] => answer2
            [4] => answer3
            [5] => answer4
        )

    [3] => Array
        (
            [1] => question3
            [2] => answer1
            [3] => answer2
            [4] => answer3
            [5] => answer4
        )

)

私の配列要素は常に 0 ではなく 1 から始まります。理由は長いですが、この質問のトピックから外れているため、説明する必要はありません。

必要に応じて、これは配列を作成するコードです。アップロードされた CSV ファイルから取得されています。

$csv_array = array(array());
if (!empty($_FILES['upload_csv']['tmp_name'])) 
{
    $file = fopen($_FILES['upload_csv']['tmp_name'], 'r');
}

if($file)
{
    while (($line = fgetcsv($file)) !== FALSE) 
    {
        $csv_array[] = array_combine(range(1, count($line)), array_values($line));
    }

    fclose($file);
}

結論として、if statement配列が空かどうかを確認するために my を変更する必要があります。

前もって感謝します!

4

6 に答える 6

44

配列をフィルタリングできます。デフォルトでは、空の値がすべて削除されます。次に、空かどうかを確認できます。

$filtered = array_filter($csv_array);
if (!empty($filtered)) {
  // your code
}

注:これは、質問に投稿されたコードで機能します。空の配列の1つに別の次元を追加した場合、次のようにはなりません:

$array = array(array()); // empty($filtered) = true;
$array = array(array(array())); // empty($filtered) = false;
于 2013-08-23T11:36:28.333 に答える
1

保存側になるために、空の行を削除したいですか?または、配列が空の場合に返しますか? または、空の位置のリストが必要ですか?

これはただの考えです!!! 未検証 !!!

/**
 * multi array scan 
 * 
 * @param $array array
 * 
 * @return bool
 */
function scan_array($array = array()){
  if (empty($array)) return true;

  foreach ($array as $sarray) {
    if (empty($sarray)) return true;
  } 

  return false;
}
于 2013-08-23T11:30:57.390 に答える
-2

この状況を回避するには、array_push を使用できます。

$result_array = array();

array_push($result_array,$new_array);

array_pushを参照

次に、 if (!empty($result_array)) { } を使用して確認できます

于 2013-08-23T11:29:55.637 に答える