<?php $data1 = null; $data2 = 'cat'; $data3 = ['cat','dog']; $data4 = [ ['name'=>'cat','wamei'=>'ネコ'], ['name'=>'dog','wamei'=>'イヌ'], ]; $data5 = array(); $data6 = 0; $d_struct_type = getDataStructureType($data1); echo '$data1 → ' . $d_struct_type . '<br>'; $d_struct_type = getDataStructureType($data2); echo '$data2 → ' . $d_struct_type . '<br>'; $d_struct_type = getDataStructureType($data3); echo '$data3 → ' . $d_struct_type . '<br>'; $d_struct_type = getDataStructureType($data4); echo '$data4 → ' . $d_struct_type . '<br>'; $d_struct_type = getDataStructureType($data5); echo '$data5 → ' . $d_struct_type . '<br>'; $d_struct_type = getDataStructureType($data6); echo '$data6 → ' . $d_struct_type . '<br>'; /** * データ構造タイプを取得する。 * * @note * データ構造タイプは4種類(0:空 , 1:プリミティブ型 ,2:エンティティ型 , 3:データ型) * * @param $value * @return int データ構造タイプ */ function getDataStructureType($data){ if($data === null) return 0; // 空 if(is_array($data)){ if(count($data) == 0){ return 2; // エンティティ型 }else{ $first = reset($data); // $first→猫 if(is_array($first)){ return 3; // データ型 }else{ return 2; // エンティティ型 } } } return 1; // プリミティブ型 } ?>
出力
$data1 → 0