サンプル

<?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
$data2 → 1
$data3 → 2
$data4 → 3
$data5 → 2
$data6 → 1