हमारे पास PHP में नीचे की तरह है और सरणी है, और नए सरणी में एक नया सरणी बनाना चाहते हैं, वहां अद्वितीय कुंजी होनी चाहिए और उसी कुंजी से मान जोड़ा जाना चाहिए।

Array
(
    [0] => Array
        (
            [58] => 32.00
        )

)
Array
(
    [0] => Array
        (
            [58] => 34.00
        )

)
Array
(
    [0] => Array
        (
            [57] => 26.00
        )

)
Array
(
    [0] => Array
        (
            [57] => 27.00
        )

)
Array
(
    [0] => Array
        (
            [56] => 16.00
        )

)
Array
(
    [0] => Array
        (
            [56] => 17.00
        )

)

हम उपरोक्त सरणी की मदद से नई सरणी बनाना चाहते हैं। एक ही कुंजी का मान जोड़ा जाना चाहिए। नई सरणी का आउटपुट नीचे जैसा होना चाहिए।

Array
(
    [58] => 66
    [57] => 53
    [56] => 33
)

कोड नीचे है

मिनमैक्सएरे का आउटपुट है

Array
(
    [0] => Array
        (
            [min] => 35.00
            [max] => 50.00
            [price] => 26.00
        )

    [1] => Array
        (
            [min] => 50.00
            [max] => 80.00
            [price] => 29.00
        )

    [2] => Array
        (
            [min] => 80.00
            [max] => 100.00
            [price] => 32.00
        )

    [3] => Array
        (
            [min] => 100.00
            [max] => 150.00
            [price] => 34.00
        )

    [4] => Array
        (
            [min] => 150.00
            [max] => 180.99
            [price] => 36.00
        )

) 

$shippingPrice = array();
            foreach ($minmaxarray as $key => $value) {
                if($price >  $value['min'] && $price <  $value['max'])
                {
                    if($value['price'])
                    {

                    $shippingPrice[][$smethodid] = $value['price'];

                    break;
                    }
                }


            }
            echo '<pre>'; print_r ($shippingPrice);

धन्यवाद

1
skd 3 मार्च 2020, 15:30
तुमने अब तक क्या प्रयास किया है?
 – 
Gavin
3 मार्च 2020, 15:31
मैंने फ़ोरैच लूप के माध्यम से पुनरावृति करने और वांछित आउटपुट बनाने की कोशिश की लेकिन सफलता नहीं मिली।
 – 
skd
3 मार्च 2020, 15:34
3
आपका शीर्ष उदाहरण छह मानों वाले एक सरणी के बजाय, एक मान के साथ छह अलग-अलग सरणियों के प्रिंट_आर जैसा दिखता है, इसलिए एक लूप काम नहीं करेगा। यदि आप उस कोड को पोस्ट करते हैं जिसे आपने अभी तक आजमाया है, तो लोग सलाह दे सकते हैं कि आप कहां गलत हो गए हैं!
 – 
Gavin
3 मार्च 2020, 15:36
कृपया अपना कोड दिखाएं
 – 
Tushar
3 मार्च 2020, 15:43
कोड है $shippingPrice = array(); foreach ($minmaxarray $key => $value) {if($price> $value['min'] && $price <$value['max']) { if($value['price']) {$ शिपिंगप्राइस[][$smethodid] = $value['price']; टूटना; } } } गूंज '<पूर्व>'; प्रिंट_आर ($ शिपिंग मूल्य);
 – 
skd
3 मार्च 2020, 15:50

3 जवाब

यदि आपकी सरणी संरचना हमेशा वैसी ही है जैसी आपने पोस्ट की है, तो यह कोड आपके लिए काम करेगा:

$example_array = array(
  array( '0' => 32.00 ),
  array( '2' => 32.00 ),
  array( '2' => 32.00 )
);

$new_array = array();

// loop through every item in nested foreach
foreach( $example_array as $value ) {
  foreach( $value as $key => $number )  {
    // if the array key not exist, calculate with 0, otherwise calculate with the actual value
    $new_array[$key] = isset($new_array[$key]) ? $new_array[$key] + $number : 0 + $number;
  }
}

print_r( $new_array );
// prints Array ( [0] => 32 [2] => 64 )

आपके सरणियों के लिए कोड उदाहरण:

$shippingPrice = array();

// loop through every item in nested foreach
foreach( $minmaxarray as $value ) {
  foreach( $value as $key => $number )  {
    // if the array key not exist, calculate with 0, otherwise calculate with the actual value
    $shippingPrice[$key] = isset($shippingPrice[$key]) ? $shippingPrice[$key] + $number : 0 + $number;
  }
}

echo '<pre>';
print_r( $shippingPrice );
2
Robin Gillitzer 3 मार्च 2020, 16:40
क्या आप कृपया मेरे प्रश्न को फिर से संपादित कर सकते हैं मैंने अभी संपादित किया है। धन्यवाद
 – 
skd
3 मार्च 2020, 16:02
मैं वास्तव में आपके अपडेट को नहीं समझता। minmaxarray किसके लिए है? कृपया थोड़ा बेहतर समझाएं। यदि यह आपका इनपुट है, तो आपका अपेक्षित आउटपुट क्या है?
 – 
Robin Gillitzer
3 मार्च 2020, 16:05
Minmaxarray मेरा इनपुट है और minmaxarray के लिए आउटपुट जिसे मैंने ऊपर चिपकाया है
 – 
skd
3 मार्च 2020, 16:19
यदि आपके प्रश्न में तीसरा कोड उदाहरण minmaxarray का आपका अपेक्षित आउटपुट है, तो उसके लिए आपका इनपुट ऐरे क्या है? कृपया स्पष्ट करें कि वास्तविक सरणी की सामग्री क्या है और आप क्या उम्मीद करते हैं कि यह कैसा दिखना चाहिए।
 – 
Robin Gillitzer
3 मार्च 2020, 16:23
मैं बस myarray $shippingPrice $example_array जैसा दिखना चाहिए जिसे आपने $shippingPrice सरणी बनाया है जिसे मैंने उपरोक्त कोड में बनाया है।
 – 
skd
3 मार्च 2020, 16:31

आप इस कोड को आजमा सकते हैं

function array_flatten($array) { 
    if (!is_array($array)) { 
        return FALSE; 
    } 
    $result = array(); 
    foreach($array as $key=> $value){ 
        if (is_array($value)) { 
           $result = array_merge($result, array_flatten($value)); 
        } 
        else { 
          $result[$key] = $value; 
        } 
   } 
 return $result; 
} 

आप इस फ़ंक्शन को अपने सरणी से कॉल करते हैं, फिर फ़ंक्शन आपकी अपेक्षित सरणी वापस कर देगा।

array_flatten($array);
0
Tushar 3 मार्च 2020, 15:51

आप 2 foreach लूप के बजाय array_walk_recursive का उपयोग कर सकते हैं

array_walk_recursive($arr, function($v,$k) use (&$r){
  $r[$k] = isset($r[$k]) ? ($r[$k]+$v) : $v;
});

वर्किंग डेमो :- https://3v4l.org/MMDEv

0
Rakesh Jakhar 3 मार्च 2020, 16:43