Bu soru burada zaten bir cevabı var:
Ben kullanışlı çanta o 'PHP araçları bu basit işlevleri vardır:
function is_flat_array($ar) {
if (!is_array($ar))
return false;
$keys = array_keys($ar);
return array_keys($keys) === $keys;
}
function is_hash($ar) {
if (!is_array($ar))
return false;
$keys = array_keys($ar);
return array_keys($keys) !== $keys;
}
Ben geniş diziler üzerinde performansını hiç denemedim. Genellikle bir sorun değil yani çoğunlukla 10 veya daha az tuşları ile diziler üzerinde kullanabilirsiniz. Ben oluşturulan aralığı $ anahtarlarını karşılaştıran daha iyi bir performans olacaktır sanıyorum 0..count($array)
.
programmatically, you can't. I suppose the only way to check in a case like yours would be to do something like: foreach ($myarray as $key => $value) { if ( is_numeric($key) ) { echo "the array appears to use numeric (probably a case of the first)"; } }
ama bu dizi $ dizi = array (0 => "ilk", 1 => "ikinci", vb) olarak inşa edilmiş davayı tespit olmaz;
function is_assoc($array) {
return (is_array($array)
&& (0 !== count(array_diff_key($array, array_keys(array_keys($array))))
|| count($array)==0)); // empty array is also associative
}
burada bir başkasının
function is_assoc($array) {
if ( is_array($array) && ! empty($array) ) {
for ( $i = count($array) - 1; $i; $i-- ) {
if ( ! array_key_exists($i, $array) ) { return true; }
}
return ! array_key_exists(0, $array);
}
return false;
}
Neşeyle PHP dokümantasyon sitesinde the is_array comments den sildi.
Yani bu form array('First', 'Second', 'Third');
örtülü PHP tuşları değerleri oluşturmak sağlar, özellikle de biraz zor bulunuyor.
Geçerli bir çözüm gibi bir şey giderdim sanırım:
function array_indexed( $array )
{
$last_k = -1;
foreach( $array as $k => $v )
{
if( $k != $last_k + 1 )
{
return false;
}
$last_k++;
}
return true;
}