PHP array में value और key दोनों को कैसे पुश करें


355

इस कोड पर एक नज़र डालें:

$GET = array();    
$key = 'one=1';
$rule = explode('=', $key);
/* array_push($GET, $rule[0] => $rule[1]); */

मैं कुछ इस तरह की तलाश कर रहा हूँ ताकि:

print_r($GET);
/* output: $GET[one => 1, two => 2, ...] */

क्या ऐसा करने के लिए कोई फ़ंक्शन है? (क्योंकि array_pushइस तरह से काम नहीं करेगा)

जवाबों:


759

नहीं, array_push()साहचर्य सरणियों के लिए कोई समान नहीं है क्योंकि अगली कुंजी निर्धारित करने का कोई तरीका नहीं है।

आपको उपयोग करना पड़ेगा

$arrayname[indexname] = $value;

10
मुझे नहीं मिला। क्या यह किसी सरणी में आइटम जोड़ने का सामान्य तरीका नहीं है?
रात्रि

किसी सरणी में एकाधिक कुंजियाँ और मान कैसे जोड़ें? उदाहरण के लिए मेरे पास [indexname1] = $ value1 और [indexname2] = $ value2 है, और मैं उन्हें $ arrayname में जोड़ना चाहता हूं
King Goeks

8
@KingGoeks $arrayname = array('indexname1' => $value1, 'indexname2' => $value2);उन्हें केवल आइटम के रूप में सेट करेंगे $arrayname। यदि आप पहले से ही $arraynameसेट कर चुके हैं और इसके मूल्यों को रखना चाहते हैं, तो प्रयास करें $arrayname += $anotherarray। ध्यान रखें कि पहली सरणी में कोई भी मौजूदा कुंजी दूसरी द्वारा अधिलेखित हो जाएगी।
चार्ली श्लेसेर

1
"ध्यान रखें कि पहली सरणी में कोई भी मौजूदा कुंजी दूसरी द्वारा अधिलेखित हो जाएगी" यह सच नहीं है, पहले सरणी में प्राथमिकता है। यदि आप करते हैं $a = array("name" => "John"); $a += array("name" => "Tom");तो $a["name"]"जॉन" होगा
santiago arizti

यह सबसे आसान तरीका है।
नोमानजेव्ड

75

किसी सरणी में मान को पुश करना स्वचालित रूप से इसके लिए एक संख्यात्मक कुंजी बनाता है।

किसी ऐरे-की-की-जोड़ी को जोड़ते समय, आपके पास पहले से ही कुंजी होती है, आपको अपने लिए एक बनाने की आवश्यकता नहीं है। एक सरणी में एक कुंजी धक्का मतलब नहीं है। आप केवल सरणी में विशिष्ट कुंजी का मान सेट कर सकते हैं।

// no key
array_push($array, $value);
// same as:
$array[] = $value;

// key already known
$array[$key] = $value;

66

आप +ऐरे को मिलाने के लिए यूनियन ऑपरेटर ( ) का उपयोग कर सकते हैं और जोड़े गए एरे की कुंजी रख सकते हैं। उदाहरण के लिए:

<?php

$arr1 = array('foo' => 'bar');
$arr2 = array('baz' => 'bof');
$arr3 = $arr1 + $arr2;

print_r($arr3);

// prints:
// array(
//   'foo' => 'bar',
//   'baz' => 'bof',
// );

तो आप कर सकते हैं $_GET += array('one' => 1);

यूनियन ऑपरेटर के उपयोग के बारे में अधिक जानकारी बनाम array_mergeदस्तावेज में http://php.net/manual/en/function.array-merge.php है


4
के बीच मूल अंतर array_merge()और +ऑपरेटर है जब 2 सरणियों एक ही कुंजी पर मान होते हैं +, ऑपरेटर दूसरी सरणी से मूल्य पर ध्यान नहीं देता (पर हावी नहीं होता) भी ऐसा नहीं होता फिर से अंकित करना / अनुक्रमणः संख्यात्मक कुंजियों ...
jave.web

धन्यवाद, मैंने कई सरणियों की कोशिश की है, लेकिन आपके जवाब से मुझे वह हासिल करने में मदद मिली जो मैं चाहता हूं,
डेनिश

21

मैं अपना उत्तर तालिका में जोड़ना चाहूंगा और यहां यह है:

//connect to db ...etc
$result_product = /*your mysql query here*/ 
$array_product = array(); 
$i = 0;

foreach ($result_product as $row_product)
{
    $array_product [$i]["id"]= $row_product->id;
    $array_product [$i]["name"]= $row_product->name;
    $i++;
}

//you can encode the array to json if you want to send it to an ajax call
$json_product =  json_encode($array_product);
echo($json_product);

आशा है कि यह किसी की मदद करेगा


1
मैंने दर्जनों समाधानों को देखा और यह केवल एक ही है जो मेरे उपयोग के मामले में फिट बैठता है। धन्यवाद!
रयान बर्नी

20

वास्तव में पक्के ने क्या कहा ...

वैकल्पिक रूप से, आप संभवतः array_merge का उपयोग इस तरह से कर सकते हैं यदि आप चाहते हैं:

array_merge($_GET, array($rule[0] => $rule[1]));

लेकिन मुझे शायद पेकका तरीका पसंद आएगा क्योंकि यह बहुत सरल है।


11

मुझे आश्चर्य है कि सबसे सरल विधि अभी तक पोस्ट नहीं की गई है:

$arr = ['company' => 'Apple', 'product' => 'iPhone'];
$arr += ['version' => 8];

2
यह समान रूप से समान नहीं है, array_merge में, कुंजी संघर्ष पर सही जीत पर सरणी, "+ =" बाईं जीत पर सरणी
santiago arizti

@santiagoarizti "जीत" से आपका क्या अभिप्राय है?
एलेक्सियोवे

1
यदि दो सरणियों में एक ही कुंजी है, array_mergeऔर सरणी संघ ( +=) विपरीत तरीके से व्यवहार करते हैं, तो array_merge दूसरे सरणी से मान का सम्मान करेगा और सरणी संघ पहले सरणी से मान का सम्मान करेगा।
सैंटियागो एरीज़टी

मेरे लिए सही समाधान। एलेक्सियो साझा करने के लिए THX! :)
थॉमस बी

8

यह वह समाधान है जो यू के लिए उपयोगी हो सकता है

Class Form {
# Declare the input as property
private $Input = [];

# Then push the array to it
public function addTextField($class,$id){
    $this->Input ['type'][] = 'text';
    $this->Input ['class'][] = $class;
    $this->Input ['id'][] = $id;
}

}

$form = new Form();
$form->addTextField('myclass1','myid1');
$form->addTextField('myclass2','myid2');
$form->addTextField('myclass3','myid3');

जब आप इसे डंप करते हैं। परिणाम इस तरह

array (size=3)
  'type' => 
    array (size=3)
      0 => string 'text' (length=4)
      1 => string 'text' (length=4)
      2 => string 'text' (length=4)
  'class' => 
    array (size=3)
      0 => string 'myclass1' (length=8)
      1 => string 'myclass2' (length=8)
      2 => string 'myclass3' (length=8)
  'id' => 
    array (size=3)
      0 => string 'myid1' (length=5)
      1 => string 'myid2' (length=5)
      2 => string 'myid3' (length=5)

7

मैं बस एक ही चीज की तलाश में था और मुझे एहसास हुआ कि, एक बार फिर, मेरी सोच अलग है क्योंकि मैं पुराना स्कूल हूं। मैं पूरी तरह से BASIC और PERL पर जाता हूं और कभी-कभी यह भूल जाता हूं कि PHP में कितनी आसान चीजें हैं।

मैंने अभी यह फ़ंक्शन डेटाबेस से सभी सेटिंग्स लेने के लिए बनाया है जहां उनके 3 कॉलम हैं। सेटकी, आइटम (कुंजी) और मूल्य (मूल्य) और उन्हें एक सरणी में रखें, जिसे ऊपर की तरह पुश का उपयोग किए बिना एक ही कुंजी / मूल्य का उपयोग करके सेटिंग्स कहा जाता है।

बहुत आसान और सरल वास्तव में

// सभी सेटिंग्स प्राप्त करें
$ सेटिंग्स = getGlobalSettings ();


// उपयोगकर्ता थीम विकल्प लागू करें
$ theme_choice = $ सेटिंग ['theme'];

.. आदि आदि…।




फ़ंक्शन getGlobalSettings () {

    $ dbc = mysqli_connect (wds_db_host, wds_db_user, wds_db_pass) या मर ("MySQL त्रुटि:"। mysqli_error ());
    mysqli_select_db ($ dbc, wds_db_name) या मर ("MySQL त्रुटि:"। mysqli_error ());
    $ MySQL = "सिस्टम से * चयन करें";
    $ परिणाम = mysqli_query ($ dbc, $ MySQL);
    जबकि ($ पंक्ति = mysqli_fetch_array ($ परिणाम)) 
        {
        $ सेटिंग्स [$ पंक्ति ['आइटम']] = $ पंक्ति ['मूल्य']; // PUSH के लिए कोई जरूरत नहीं
        }
    mysqli_close ($ डीबीसी);
$ सेटिंग्स लौटाएं;
}


तो अन्य पोस्ट की तरह ही समझाएँ ... php में जब आप उपयोग कर रहे हों तो किसी सरणी को "PUSH" करने की कोई आवश्यकता नहीं है

की => मान

और ... पहले सरणी को परिभाषित करने की कोई आवश्यकता नहीं है।

$ सरणी = सरणी ();

परिभाषित या धक्का देने की जरूरत नहीं है। बस $ सरणी प्रदान करें [$ कुंजी] = $ मूल्य; यह स्वचालित रूप से एक ही समय में एक धक्का और एक घोषणा है।

मुझे सुरक्षा कारणों से इसे जोड़ना चाहिए, (P) oor (H) elpless (P) रोटेन, मेरा मतलब है कि Dummies के लिए प्रोग्रामिंग, मेरा मतलब है PHP .... hehehe मैं सुझाव देता हूं कि आप केवल इस अवधारणा का उपयोग करें जो मैंने इरादा किया था। कोई भी अन्य तरीका सुरक्षा जोखिम हो सकता है। वहाँ, मेरी अस्वीकृति बनाई!


5
array_push($arr, ['key1' => $value1, 'key2' => value2]);

यह ठीक काम करता है। सरणी में इसके मूल्य के साथ कुंजी बनाता है


4
Downvoted। यह मौजूदा $arrसरणी के अंत में एक नया सरणी देता है।
एलेक्सियोवे

4

थोड़ा देर से लेकिन अगर आपको एक नेस्टेड ऐरे से ऐतराज नहीं है तो आप यह तरीका अपना सकते हैं:

$main_array = array(); //Your array that you want to push the value into
$value = 10; //The value you want to push into $main_array
array_push($main_array, array('Key' => $value));

स्पष्ट करने के लिए, यदि आप json_encode ($ main_array) का उत्पादन करते हैं, जो कि {{"कुंजी": "10"} जैसा दिखेगा।


4

थोड़ा अजीब है, लेकिन यह मेरे लिए काम करता है

    $array1 = array("Post Slider", "Post Slider Wide", "Post Slider");
    $array2 = array("Tools Sliders", "Tools Sliders", "modules-test");
    $array3 = array();

    $count = count($array1);

    for($x = 0; $x < $count; $x++){
       $array3[$array1[$x].$x] = $array2[$x];
    }

    foreach($array3 as $key => $value){
        $output_key = substr($key, 0, -1);
        $output_value = $value;
        echo $output_key.": ".$output_value."<br>";
    }

3
 $arr = array("key1"=>"value1", "key2"=>"value");
    print_r($arr);

// प्रिंट्स सरणी ['key1' => "value1", 'key2' => "value2"]


2

नमस्ते, मैं एक ही समस्या थी मैं इस समाधान आप दो सरणियों का उपयोग करना चाहिए मिल तो उन दोनों को गठबंधन

 <?php

$fname=array("Peter","Ben","Joe");

$age=array("35","37","43");

$c=array_combine($fname,$age);

print_r($c);

?>

संदर्भ: w3schools



2

के साथ पहली स्थिति में जोड़ने के लिए keyऔरvalue

$newAarray = [newIndexname => newIndexValue] ;

$yourArray = $newAarray + $yourArray ;

2

मौजूदा सरणी के लिए "कुंजी" और "मान" को पुश करने के लिए, आप +=शॉर्टकट ऑपरेटर का उपयोग कर सकते हैं ।

यह बहुत ही सरल उदाहरण देखें:

$GET = [];
$GET += ['one' => 1];

का परिणाम print_r($GET)होगा:

Array
(
    [one] => 1
)

1

उदाहरण array_merge () ...।

$array1 = array("color" => "red", 2, 4); $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); $result = array_merge($array1, $array2); print_r($result);

ऐरे ([रंग] => हरा, [0] => 2, [1] => 4, [2] => ए, [3] => बी, [आकार] => ट्रेपेज़ॉइड, [4] => 4 ,)


1
array_push($GET, $GET['one']=1);

इससे मेरा काम बनता है।


यह निष्पादित करता है $GET['one']=1, फिर उस कथन के रिटर्न मान (= 1, rvalue) का उपयोग करता है, और फिर निष्पादित करता है array_push($GET, 1)। परिणाम = [0] -> 1, [एक] -> 1
KekuSemau

0

मैंने एक साधारण कार्य लिखा:

function push(&$arr,$new) {
    $arr = array_merge($arr,$new);
}

ताकि मैं नए तत्व को आसानी से "अप" कर सकूं:

push($my_array, ['a'=>1,'b'=>2])

0

यहाँ पहले से ही कुछ बेहतरीन उदाहरण दिए गए हैं। न्यूमेरिकल इंडेक्स इंडेक्स को रूट करने के लिए साहचर्य सरणी तत्वों को पुश करने के लिए एक सरल उदाहरण जोड़ना।

`$intial_content = array();

if (true) {
 $intial_content[] = array('name' => 'xyz', 'content' => 'other content');
}`

0

मैं आमतौर पर ऐसा करता हूं:

$array_name = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.