क्या कोई मुझे किसी कोड या निर्देशों के साथ दोबारा चलने के तरीके में मदद कर सकता है और आखिरी तत्व तक पहुंचने पर पूरा पथ प्रिंट कर सकता है? एक साधारण गूंज काम करेगी क्योंकि मैं कोड को अन्य किसी भी फ़ंक्शन में अनुकूलित कर दूंगा जो मैं विकसित कर रहा हूं।चलने के मार्ग को रिकर्सिव करें और चलने के पथ को प्रिंट करें
समारोह सरणी आयाम लगाने की है क्योंकि इस परम पारित हो जाएगा की जरूरत नहीं है:
उदाहरण:
$depth = 8;
$array[1][3][5][6][9][5][8][9];
समारोह 8 तत्व यह है कि यह करने के लिए सभी पथ प्रिंट reachs जब:
//print path
'1 -> 3 -> 5 -> 6 -> 9 -> 5 -> 8 -> 9'
जैसा कि मैंने कहा, केवल इस प्रारूप में मुद्रण कारण मैं लूंगा काम करेंगे कोड को किसी अन्य फ़ंक्शन में लागू करें।
सरणी कुंजी के समान मूल्य हो सकता है। स्पष्ट रूप से संपूर्ण arary के लिए एक ही अनुक्रम में एक ही मूल्य नहीं है।
अपडेट किया गया:
वॉक रिकर्सिवली काम करते हैं:
$someArray[1][2][3] = 'end';
$someArray[1][2][6] = 'end';
$someArray[1][3][6] = 'end';
$someArray[4][3][7] = 'end';
function listArrayRecursive(&$array_name, $ident = 0){
if (is_array($array_name)){
foreach ($array_name as $k => &$v){
if (is_array($v)){
for ($i=0; $i < $ident * 10; $i++){ echo " "; }
echo $k . " : " . "<br>";
listArrayRecursive($v, $ident + 1);
}else{
for ($i=0; $i < $ident * 10; $i++){ echo " "; }
echo $k . " : " . $v . "<br>";
}
}
}else{
echo "Variable = " . $array_name;
}
}
listArrayRecursive($someArray);
प्रिंट होगा:
1 :
2 :
3 : end
6 : end
3 :
6 : end
4 :
3 :
7 : end
अब, मैं भी सरणी के रास्ते हर मुद्रित कर सकते हैं यह अंत तक पहुंचता है? उदाहरण के लिए:
1 :
2 :
3 : end : path -> 1,2,3
6 : end : path -> 1,2,6
3 :
6 : end : path -> 1,3,6
4 :
3 :
7 : end : path -> 4,3,7
संपादित कोड तीसरे PARAM जोड़ना पथ को रिकॉर्ड करने:
$someArray[1][2][3] = 'end';
$someArray[1][2][6] = 'end';
$someArray[1][3][6] = 'end';
$someArray[4][3][7] = 'end';
$someArray[3][2] = 'end';
function listArrayRecursive(&$array_name, $ident = 0, $path = null){
foreach ($array_name as $k => &$v){
if (is_array($v)){
for ($i=0; $i < $ident * 10; $i++){ echo " "; }
echo $k . " : " . "<br>";
$path .= $k . ', ';
listArrayRecursive($v, $ident + 1, $path);
}else{
for ($i=0; $i < $ident * 10; $i++){ echo " "; }
echo $k . " : " . $v . ' - path -> ' . $path . "<br>";
}
}
}
listArrayRecursive($someArray);
प्रिंट होगा:
1 :
2 :
3 : end - path -> 1, 2,
6 : end - path -> 1, 2,
3 :
6 : end - path -> 1, 2, 3,
4 :
3 :
7 : end - path -> 1, 4, 3,
3 :
2 : end - path -> 1, 4, 3,
खैर, यह प्रत्यावर्तन के साथ हल करने के लिए बुनियादी काम है। आपने क्या प्रयास किया है – zerkms
@zerkms वास्तव में मेरे पास रिकॉर्शन http://codepad.org/iyrcdfQP के लिए यह कोड है, लेकिन मैं वर्तमान $ कुंजी के पथ को ट्रैक करने के लिए भाग पर फंस गया हूं। – Henrique
क्या आप एक और स्पष्ट उदाहरण दे सकते हैं, सरणी की किसी भी गहराई के भीतर कई वस्तुओं का क्या है या यदि सरणी को '$ गहराई' के रूप में गहराई से घोंसला नहीं दिया गया है? यह हल करने में क्या समस्या है? – salathe