PHP配列が連想配列か連番配列かを判定する方法
PHPにおいて、配列は大きく分けて2種類に分類されます。
- 連想配列 (Associative Array): キーと値のペアで構成される配列です。キーは文字列や数値であり、値は任意のデータ型です。
- 連番配列 (Sequential Array): 数値のインデックスでアクセスされる配列です。インデックスは自動的に割り当てられ、通常は0から始まります。
判定方法
array_keys()関数を使用する:
- 配列のキーを取得し、キーがすべて整数であるかを確認します。
- すべてのキーが整数であれば、連番配列です。
$array = ['apple', 'banana', 'orange']; // 連番配列
if (array_keys($array) === range(0, count($array) - 1)) {
echo "連番配列です";
} else {
echo "連想配列です";
}
is_int()関数を使用する:
- 配列のキーをループでチェックし、すべてのキーが整数であるかを確認します。
$array = ['apple', 'banana', 'orange']; // 連番配列
$isSequential = true;
foreach (array_keys($array) as $key) {
if (!is_int($key)) {
$isSequential = false;
break;
}
}
if ($isSequential) {
echo "連番配列です";
} else {
echo "連想配列です";
}
array_is_numeric()関数を使用する:
- 配列のキーがすべて数値であるかを確認します。
- 配列のキーがすべて数値で、かつ連番である場合、連番配列です。
$array = ['apple', 'banana', 'orange']; // 連番配列
if (array_is_numeric(array_keys($array)) && array_keys($array) === range(0, count($array) - 1)) {
echo "連番配列です";
} else {
echo "連想配列です";
}
PHP配列の種類判定方法のコード例
$array1 = ['apple' => 1, 'banana' => 2, 'orange' => 3]; // 連想配列
$array2 = ['apple', 'banana', 'orange']; // 連番配列
function isAssociativeArray($array) {
return array_keys($array) !== range(0, count($array) - 1);
}
if (isAssociativeArray($array1)) {
echo "array1は連想配列です\n";
} else {
echo "array1は連番配列です\n";
}
if (isAssociativeArray($array2)) {
echo "array2は連想配列です\n";
} else {
echo "array2は連番配列です\n";
}
$array1 = ['apple' => 1, 'banana' => 2, 'orange' => 3]; // 連想配列
$array2 = ['apple', 'banana', 'orange']; // 連番配列
function isAssociativeArray($array) {
foreach (array_keys($array) as $key) {
if (!is_int($key)) {
return true; // 連想配列
}
}
return false; // 連番配列
}
if (isAssociativeArray($array1)) {
echo "array1は連想配列です\n";
} else {
echo "array1は連番配列です\n";
}
if (isAssociativeArray($array2)) {
echo "array2は連想配列です\n";
} else {
echo "array2は連番配列です\n";
}
$array1 = ['apple' => 1, 'banana' => 2, 'orange' => 3]; // 連想配列
$array2 = ['apple', 'banana', 'orange']; // 連番配列
function isAssociativeArray($array) {
return !array_is_numeric(array_keys($array)) || array_keys($array) !== range(0, count($array) - 1);
}
if (isAssociativeArray($array1)) {
echo "array1は連想配列です\n";
} else {
echo "array1は連番配列です\n";
}
if (isAssociativeArray($array2)) {
echo "array2は連想配列です\n";
} else {
echo "array2は連番配列です\n";
}
$array = ['apple' => 1, 'banana' => 2, 'orange' => 3]; // 連想配列
$isAssociative = true;
foreach ($array as $key => $value) {
if (!array_key_exists($key, $array)) {
$isAssociative = false;
break;
}
}
if ($isAssociative) {
echo "連想配列です";
} else {
echo "連番配列です";
}
$array = ['apple' => 1, 'banana' => 2, 'orange' => 3]; // 連想配列
if (array_values($array) === $array) {
echo "連番配列です";
} else {
echo "連想配列です";
}
array_diff_assoc()関数を使用する:
$array = ['apple' => 1, 'banana' => 2, 'orange' => 3]; // 連想配列
if (array_diff_assoc($array, array_values($array))) {
echo "連想配列です";
} else {
echo "連番配列です";
}
$array = ['apple' => 1, 'banana' => 2, 'orange' => 3]; // 連想配列
$isAssociative = array_reduce(array_keys($array), function ($carry, $key) {
return $carry || !is_int($key);
}, false);
if ($isAssociative) {
echo "連想配列です";
} else {
echo "連番配列です";
}
php arrays