PHP में साहचर्य सरणी के लिए आइटम धक्का


91

मैं एक आइटम को इस तरह एक सहयोगी सरणी में धकेलने की कोशिश कर रहा हूं:

$new_input['name'] = array(
    'type' => 'text', 
    'label' => 'First name', 
    'show' => true, 
    'required' => true
);
array_push($options['inputs'], $new_input);

हालांकि, नंबर जोड़ने में कुंजी के रूप में 'नाम' के बजाय। क्या इसे करने का एक और तरीका है?


एक सरणी को दूसरे सरणी में धकेलना संभव नहीं है। मैंने यह सब विकल्प आज़माया है और मर्ज को केवल सरणी में जोड़ा है। मैंने अपनी समस्या एक कक्षा के साथ हल की।
— एलेक्स बेनिंकासा सैंटोस

जवाबों:



62

Array_push () के बजाय , array_merge () का उपयोग करें

यह दो सरणियों का विलय करेगा और एक ही सरणी में उनकी वस्तुओं को संयोजित करेगा।

उदाहरण कोड -

$existing_array = array('a'=>'b', 'b'=>'c');
$new_array = array('d'=>'e', 'f'=>'g');

$final_array=array_merge($existing_array, $new_array);

इसके परिणामी सरणी को अंतिम_अरे में लौटाता है। और परिणामी सरणी के परिणाम होंगे -

array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')

संभावित समस्याओं के बारे में जानने के लिए कृपया इस लिंक की समीक्षा करें ।


1
वास्तव में यह $ मौजूदा_अरे = सरणी ('a' => 'b', 'b' => 'c') होना चाहिए; $ new_array = array ('d' => 'e', ​​'f' => 'g'); $ परिणाम = array_merge ($ मौजूदा_अरे, $ new_array);
— केल्विन चान

1
अच्छी तरह से आउटपुट इकट्ठा करना एक सामान्य ज्ञान है। मैं सिर्फ आइडिया दे रहा था। सादर
— मुर्तज़ा खुर्शीद हुसैन


7

WebbieDave का समाधान काम करेगा। यदि आप ऐसी किसी चीज़ को अधिलेखित नहीं करना चाहते हैं जो पहले से ही 'नाम' में हो सकती है, तो आप ऐसा कुछ भी कर सकते हैं:

$options['inputs']['name'][] = $new_input['name'];


यह काम नहीं करता है अगर आप सब कुछ सहयोगी नहीं रखना चाहते हैं, जैसे कि बीच में अन्य गिने हुए सरणियों को धक्का दिए बिना। नीचे @Steven H पर एक नज़र डालें
— brianlmerritt

4

यदि आप $new_inputकेवल एक 'नाम' तत्व शामिल कर सकते हैं, जिसका आप उपयोग करना चाहते हैं array_merge।

$new_input = array('name'=>array(), 'details'=>array());
$new_input['name'] = array('type'=>'text', 'label'=>'First name'...);
$options['inputs'] = array_merge($options['inputs'], $new_input);

3

कर्टिस का जवाब मेरी ज़रूरत के बहुत करीब था, लेकिन मैंने इसे थोड़ा बदल दिया।

उन्होंने कहां इस्तेमाल किया:

$options['inputs']['name'][] = $new_input['name'];

मैंनें इस्तेमाल किया:

$options[]['inputs']['name'] = $new_input['name'];

यहाँ एक DB से क्वेरी का उपयोग करके मेरा वास्तविक कोड है:

while($row=mysql_fetch_array($result)){ 
    $dtlg_array[]['dt'] = $row['dt'];
    $dtlg_array[]['lat'] = $row['lat'];
    $dtlg_array[]['lng'] = $row['lng'];
}

धन्यवाद!


2

बस कुछ स्निपेट बदलें (array_merge फ़ंक्शन का उपयोग करें): -

  $options['inputs']=array_merge($options['inputs'], $new_input);

2

मैं उपयोग करता हूं php5.6

कोड :

$person = ["name"=>"mohammed", "age"=>30];

$person['addr'] = "Sudan";

print_r($person) 

उत्पादन

Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )


1

ऐसा करने का एक बेहतर तरीका है:

यदि सरणी $ arr_options में मौजूदा सरणी है।

$arr_new_input['name'] = [
    'type' => 'text', 
    'label' => 'First name', 
    'show' => true, 
    'required' => true
];

$arr_options += $arr_new_input;

चेतावनी: $ arr_options मौजूद होना चाहिए। यदि $ arr_options के पास पहले से ही एक '' नाम '' है, तो वह ओवर राइट हो जाएगा।

उम्मीद है की यह मदद करेगा।



0

साहचर्य सरणी को मर्ज करने के लिए आप array_merge ($ array1, $ array2) का उपयोग कर सकते हैं। उदाहरण:

$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));

आउटपुट:

Array ( [0] => red [1] => green [2] => blue [3] => yellow )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.