2d सरणी बनाने का सबसे आसान तरीका क्या है। मैं इसके समान कुछ करने में सक्षम होने की उम्मीद कर रहा था:
declare int d[0..m, 0..n]
जवाबों:
आप सरणी के सूचकांक को निर्दिष्ट करके, सरणी की तरह एक साहचर्य सरणी, या "हैश-टेबल" भी बना सकते हैं।
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe',
'email' => 'jane@example.com'
),
);
के बराबर है
$array = array();
$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = 'john@example.com';
$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = 'jane@example.com';
निम्नलिखित दो आयामी सरणी में समकक्ष और परिणाम हैं:
$array = array(
array(0, 1, 2),
array(3, 4, 5),
);
या
$array = array();
$array[] = array(0, 1, 2);
$array[] = array(3, 4, 5);
सिर्फ घोषणा करें? आपको नहीं करना है। बस सुनिश्चित करें कि चर मौजूद है:
$d = array();
एरे को गतिशील रूप से आकार दिया जाता है, और गैर-अस्तित्ववादी तत्व के लिए कुछ भी लिखने का प्रयास इसे बनाता है (और यदि आवश्यक हो तो संपूर्ण सरणी बनाता है)
$d[1][2] = 3;
यह पूर्व घोषणाओं के बिना किसी भी आयाम के लिए मान्य है।
countसही आयाम पर उपयोग कर सकते हैं , उदाहरण के लिए count($d[1]), जब तक मैं आपकी बात को गलत नहीं समझ रहा हूँ?
सबसे पहले, PHP में बहुआयामी सरणियाँ नहीं हैं, इसमें सरणियों के सरणियाँ हैं।
दूसरे, आप एक फ़ंक्शन लिख सकते हैं जो यह करेगा:
function declare($m, $n, $value = 0) {
return array_fill(0, $m, array_fill(0, $n, $value));
}
एक सरल, "भरने के रूप में तुम जाओ" समाधान के लिए:
$foo = array(array());
यह आपको एक लचीला छद्म दो आयामी सरणी प्राप्त करेगा जो $ foo [ n ] [ n ] धारण कर सकता है जहां n <= your (निश्चित रूप से आपके स्मृति आकार की सामान्य बाधाओं द्वारा सीमित है, लेकिन आपको वह विचार मिलता है जिसकी मुझे आशा है)। यह, सिद्धांत रूप में, आप की जरूरत के रूप में कई उप सरणियों बनाने के लिए बढ़ाया जा सकता है।
जहां तक मुझे पता है कि ऐसा करने के लिए php फ़ंक्शन में कोई अंतर्निहित नहीं है, तो आपको इसे लूप के माध्यम से या एक कस्टम विधि के माध्यम से करने की आवश्यकता है जो कि @Amber द्वारा जवाब में दिए गए array_fill की तरह कुछ को पुन: कॉल करता है;
मैं मान रहा हूं कि आपने सरणियों का खाली लेकिन गहन वर्णन किया है। उदाहरण के लिए, आप 3 सरणियों के एक सरणी के नीचे जैसा अंतिम परिणाम चाहते हैं :
$final_array = array(array(), array(), array());
यह सिर्फ हाथ कोड के लिए सरल है, लेकिन 3 सरणियों के 3 सरणियों के एक सरणी की तरह एक मनमाने आकार के सरणी के लिए उपयोग करने से पहले इसे शुरू करने के लिए जटिल होना शुरू होता है:
$final_array = array(array(array(), array(), array()), array(array(), array(), array()), array(array(), array(), array()));
...आदि...
मुझे निराशा मिलती है। चेक या त्रुटियों को फेंकने के बिना किसी भी गहराई का उपयोग करने के लिए सरणियों के एक प्रारंभिक सरणी को घोषित करने का एक आसान तरीका होना अच्छा होगा।
एटली के जवाब ने मुझे यह समझने में मदद की। यहां दो-आयामी सरणी के माध्यम से पुनरावृति कैसे करें, इसका एक उदाहरण है। यह नमूना दिखाता है कि किसी सरणी के ज्ञात नामों के मानों को कैसे खोजना है और यह भी कि आप उन सभी क्षेत्रों से गुजरते हैं जहां आप पाते हैं। मुझे उम्मीद है कि यह किसी की मदद करता है।
$array = array(
0 => array(
'name' => 'John Doe',
'email' => 'john@example.com'
),
1 => array(
'name' => 'Jane Doe',
'email' => 'jane@example.com'
),
);
foreach ( $array as $groupid => $fields) {
echo "hi element ". $groupid . "\n";
echo ". name is ". $fields['name'] . "\n";
echo ". email is ". $fields['email'] . "\n";
$i = 0;
foreach ($fields as $field) {
echo ". field $i is ".$field . "\n";
$i++;
}
}
आउटपुट:
hi element 0
. name is John Doe
. email is john@example.com
. field 0 is John Doe
. field 1 is john@example.com
hi element 1
. name is Jane Doe
. email is jane@example.com
. field 0 is Jane Doe
. field 1 is jane@example.com
और मेरे लिए इस बारे में तर्क है कि एक सरणी को विरल होना चाहिए या नहीं यह संदर्भ पर निर्भर करता है।
उदाहरण के लिए, अगर $ a [6] [9] को पॉप्युलेट नहीं किया जाता है, तो यह $ [6] [9] के बराबर होता है, उदाहरण के लिए "" या 0 के साथ।
$r = array("arr1","arr2");
एकल सरणी तत्व जो आपको लिखना चाहिए गूंजने के लिए:
echo $r[0];
echo $r[1];
उत्पादन होगा: arr1 arr2
यदि आप जल्दी से एक लाइनर का उपयोग करके सरल मूल्य के लिए बहुआयामी सरणी बनाना चाहते हैं, तो मैं इस तरह से इसे करने के लिए इस सरणी लाइब्रेरी का उपयोग करने की सलाह दूंगा :
$array = Arr::setNestedElement([], '1.2.3', 'value');
जो उत्पादन करेगा
[
1 => [
2 => [
3 => 'value'
]
]
]
आप इसे आज़मा सकते हैं, लेकिन दूसरे आयाम मान अनुक्रमित के बराबर होंगे:
$array = array_fill_keys(range(0,5), range(0,5));
खाली सरणी के लिए थोड़ा और अधिक जटिल:
$array = array_fill_keys(range(0, 5), array_fill_keys(range(0, 5), null));
आपको एक सरणी को दूसरे सरणी में घोषित करने की आवश्यकता है।
$arr = array(array(content), array(content));
उदाहरण:
$arr = array(array(1,2,3), array(4,5,6));
सरणी से पहला आइटम प्राप्त करने के लिए, आप उपयोग करेंगे $arr[0][0], यह सरणी से पहली सरणी के पहले आइटम की तरह है ।
दूसरी सरणी से $arr[1][0]पहला आइटम सरणी से लौटाएगा ।