Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में सरणी की बहुआयामी प्रकृति की जांच कैसे करें

PHP में किसी सरणी के बहुआयामी (multidimensional) होने की जांच करने के लिए विभिन्न तरीके हैं। दिए गए उदाहरण में rsort() का उपयोग किया गया है, लेकिन यह तरीका भरोसेमंद नहीं है। बेहतर और मानक तरीके नीचे बताए गए हैं।

दिया गया उदाहरण (अनुशंसित नहीं)

<?php
$my_array = array(
    array("This", "is", "a", "sample"),
    array("Hi", "there")
);

function multi_dim($my_arr) {
    rsort($my_arr);
    return isset($my_arr[0]) && is_array($my_arr[0]);
}

echo "Is the array multi-dimensional? ";
var_dump(multi_dim($my_array));
?>

आउटपुट

Is the array multi-dimensional? bool(true)

इस तरीके की समस्याएँ:

  • rsort() सरणी को संशोधित करता है (मूल क्रम नष्ट करता है)।
  • यह केवल पहले तत्व की जांच करता है; यदि पहला तत्व सरणी नहीं है लेकिन बाद के हैं, तो गलत false लौटाएगा।
  • संख्यात्मक कुंजियों वाली सरणियों पर अप्रत्याशित व्यवहार कर सकता है।

अनुशंसित तरीके

1. array_filter() के साथ (सबसे विश्वसनीय)

<?php
function isMultiDimensional($arr) {
    return count(array_filter($arr, 'is_array')) > 0;
}

$arr1 = [1, 2, 3];
$arr2 = [1, [2, 3], 4];
$arr3 = ['a' => [1,2], 'b' => [3,4]];

var_dump(isMultiDimensional($arr1)); // false
var_dump(isMultiDimensional($arr2)); // true
var_dump(isMultiDimensional($arr3)); // true
?>

2. पुनरावर्ती जांच (गहरी नेस्टिंग के लिए)

<?php
function isMultiDimensionalDeep($arr) {
    foreach ($arr as $value) {
        if (is_array($value)) {
            return true; // या गहरी जांच के लिए: return isMultiDimensionalDeep($value);
        }
    }
    return false;
}
?>

3. array_walk_recursive का उपयोग

<?php
function isMultiDimensional($arr) {
    $isMulti = false;
    array_walk_recursive($arr, function($val, $key) use (&$isMulti) {
        // यह केवल पत्ती नोड्स देखता है, संरचना नहीं
    });
    // बेहतर: count($arr) !== count($arr, COUNT_RECURSIVE)
    return count($arr) !== count($arr, COUNT_RECURSIVE);
}
?>

सबसे सरल एक-लाइनर

<?php
$isMulti = count($arr) !== count($arr, COUNT_RECURSIVE);
?>

COUNT_RECURSIVE सभी नेस्टेड तत्वों को गिनता है। यदि संख्या अलग है, तो सरणी बहुआयामी है।

निष्कर्ष

rsort() आधारित तरीका सरणी को संशोधित करता है और अविश्वसनीय है। count($arr) !== count($arr, COUNT_RECURSIVE) या array_filter($arr, 'is_array') का उपयोग करें।

  1. - PHP में array_values() फंक्शन

    PHP में array_values() फंक्शन सरणी के सभी मान लौटाता है। सिंटैक्स array_values(arr) पैरामीटर्स arr - निर्दिष्ट सरणी। रिटर्न वैल्यू सरणी के मान। उदाहरण North); print_r(array_values($arr)); ?> आउटपुट North )

  1. - PHP में array_unique() फंक्शन

    PHP में array_unique() फंक्शन सरणी से डुप्लिकेट मान हटाता है। यह अद्वितीय तत्वों के साथ फ़िल्टर की गई सरणी लौटाता है। सिंटैक्स array_unique(arr, compare) पैरामीटर्स arr - निर्दिष्ट सरणी। compare - सरणी तत्वों/आइटम्स की तुलना कैसे करें। संभावित मान: SORT_STRING - आइटम्स की स्ट्रिंग के रूप में तुल

  1. - PHP में array() फ़ंक्शन / सरणी निर्माण

    PHP में array() भाषा निर्माण (language construct) है जो सरणी बनाता है। PHP 5.4+ में छोटा सिंटैक्स [] भी उपलब्ध है। PHP में तीन प्रकार की सरणियाँ होती हैं। सरणी के प्रकार (Array Types) प्रकारविवरणउदाहरण सूचकांकित (Indexed)संख्यात्मक कुंजियाँ (0, 1, 2...)[10, 20, 30] सहयोगी (Associative)नामित कुंजि