मैं सभी 'imdb' कुंजियों के मान को 10 से गुणा करना चाहता हूं और मान को अपडेट करना चाहता हूं। नीचे दिए गए कोड में जब मैं print_r $horrorMovies करता हूं तो यह दिखाता है कि मैंने आवश्यक मात्रा के साथ एक नई सरणी बनाई है। यह लगभग वहाँ है अगर मैं करता हूँ

 $horrorMovies[0]['imdb'] = $imdbPercent;

लेकिन मान केवल पहले नेस्टेड सरणी में लिखे जाते हैं।

मुझे यकीन नहीं है कि अगर यह संभव हो तो यह काम foreach के साथ कैसे करें।

function imdbMultiply($n) {
    return($n['imdb'] * 10);
}

$horrorMovies = array(
    array(
    "title" => "The babadook",
    "imdb"  => 6.8,
    "rotten" => 98
    ),
    array(
    "title" => "The shining",
    "imdb" => 8.4,
    "rotten" => 87
)

);



$imdbPercent = array_map("imdbMultiply", $horrorMovies);

$horrorMovies['imdb'] = $imdbPercent;
0
tinamou_ed 30 सितंबर 2017, 23:06

4 जवाब

//original data
$horrorMovies = array(
    array(
    "title" => "The babadook",
    "imdb"  => 6.8,
    "rotten" => 98
    ),
    array(
    "title" => "The shining",
    "imdb" => 8.4,
    "rotten" => 87
)
);

//define "transformation" function, note that the argument is passed via reference
function imdbMultiply(&$n) {
    $n['imdb'] *= 10;
}

//one option is to use foreach and then unset the reference to the
//last array element
foreach($horrorMovies as &$v){
    $v['imdb'] *= 10;
}
unset($v);
print_r($horrorMovies);

//alternatively, one might apply the "transformation" function
//directly to each array element without the need to create a copy
array_walk($horrorMovies, "imdbMultiply");
print_r($horrorMovies);
0
ewcz 30 सितंबर 2017, 23:16

आप केवल सबरेरे [imdb] आइटम्स को फोरच कर सकते हैं।

$horrorMovies = array(
    array(
    "title" => "The babadook",
    "imdb"  => 6.8,
    "rotten" => 98
    ),
    array(
    "title" => "The shining",
    "imdb" => 8.4,
    "rotten" => 87
)

);


foreach($horrorMovies as &$subarray){
    $subarray["imdb"] *= 10;
}

var_dump($horrorMovies);

https://3v4l.org/ub40E

0
Andreas 30 सितंबर 2017, 23:20

आपको बस एक लूप में जाने और 'imdb' मानों को बदलने की जरूरत है, अगला जोड़ें आपके कोड के लिए के लिए लूप:

for ($i=0; $i<count($horrorMovies); $i++){
    $horrorMovies[$i]['imdb']*=10;
}
0
Prad 30 सितंबर 2017, 23:22

अगर मैं समझता हूं कि आप क्या उम्मीद करते हैं, तो आपका imdbMultiply() फ़ंक्शन निम्न होना चाहिए जिसका उपयोग array_map :

function imdbMultiply($n) {
    $n['imdb'] *= 10;
    return $n;
}

क्या आप यही उम्मीद करते हैं?

एक अन्य विचार array_walk फ़ंक्शन का उपयोग करना है, लेकिन आपको अपने imdbMultiply को परिभाषित करना चाहिए () इस तरह कार्य करें:

function imdbMultiply(&$n) {
    $n['imdb'] *= 10;
}

Array_walk का उपयोग अलग है:

array_walk($horrorMovies, "imdbMultiply"); 
var_dump($horrorMovies);
0
Arno 30 सितंबर 2017, 23:49