কীভাবে পিএইচপি অ্যারেতে মান এবং কী উভয়ই ঠেলা যায়


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
আমি পাই না। অ্যারেতে আইটেম যুক্ত করার এটি কি সাধারণ উপায় নয়?
rgin

এক অ্যারে একাধিক কী এবং মানগুলি কীভাবে যুক্ত করবেন? উদাহরণস্বরূপ আমার কাছে [সূচিপত্র 1] = $ মান 1 এবং [সূচক 2] = $ মান 2 রয়েছে এবং আমি সেগুলি $
অ্যারেনেমে

8
@ কিঙ্গোগিক্স এগুলিকে $arrayname = array('indexname1' => $value1, 'indexname2' => $value2);কেবলমাত্র আইটেম হিসাবে সেট করবে $arrayname। আপনি যদি ইতিমধ্যে $arraynameসেট করে রেখেছেন এবং এর মানগুলি রাখতে চান তবে চেষ্টা করুন $arrayname += $anotherarray। মনে রাখবেন যে প্রথম অ্যারেতে থাকা কোনও কীগুলি দ্বিতীয় দ্বারা ওভাররাইট করা হবে।
চার্লি শ্লিয়েসার

1
"মনে রাখবেন যে প্রথম অ্যারেতে থাকা কোনও কীগুলি দ্বিতীয় দ্বারা ওভাররাইট করা হবে" এটি সত্য নয়, প্রথম অ্যারের অগ্রাধিকার রয়েছে। আপনি যদি তা করেন $a = array("name" => "John"); $a += array("name" => "Tom");তবে $a["name"]"জন"
হবেন

এটি সবচেয়ে সহজ উপায়।
নোমান জাভেদ

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- विसর.এফপি


4
মধ্যে মৌলিক পার্থক্য array_merge()এবং +অপারেটর যখন 2 অ্যারে একই কী উপর মান থাকতে +, অপারেটর দ্বিতীয় অ্যারে থেকে মান উপেক্ষা করে (ওভাররাইড করে না) এটি করে না পুনরায় নম্বর / reindex সাংখ্যিক কী ...
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
আমি কয়েক ডজন সমাধান দেখেছি এবং এটি কেবলমাত্র আমার ব্যবহারের ক্ষেত্রে ফিট fit ধন্যবাদ!
রায়ান বার্নি

20

ঠিক কী বললেন পেক্কা ...

বিকল্প হিসাবে, আপনি সম্ভবত চাইলে এইভাবে অ্যারে_ডর্ম ব্যবহার করতে পারেন:

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

তবে আমি সম্ভবত পেকার পদ্ধতিটি পছন্দ করতাম কারণ এটি অনেক সহজ।


11

আমি অবাক হই কেন এখনও সবচেয়ে সহজ পদ্ধতি পোস্ট করা হয়নি:

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

2
এটি ঠিক একই নয়, অ্যারে_সেমে, মূল বিরোধে ডানদিকে অ্যারে জিতেছে, "+ =" বাম জিতে অ্যারে
সান্টিয়াগো আরিজতি

@santiagoarizti "জয়" বলতে আপনার অর্থ কী?
অ্যালেক্সিওয়ে

1
যদি দুটি অ্যারে উভয় একই কী থাকে 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

আমি কেবল একই জিনিসটি খুঁজছিলাম এবং আমি বুঝতে পারি যে, আমি আবার পুরানো স্কুল হওয়ায় আমার চিন্তাভাবনা আলাদা। আমি বেসিক এবং পিইআরএল-এর সমস্ত পথে ফিরে যাই এবং কখনও কখনও আমি ভুলে যাই যে পিএইচপি-তে জিনিসগুলি কত সহজ।

আমি মাত্র 3 টি কলাম যেখানে ডাটাবেস থেকে সমস্ত সেটিংস নিতে এই ফাংশনটি তৈরি করেছি। সেটকি, আইটেম (কী) এবং মান (মান) এবং উপরের মতো ধাক্কা না দিয়ে একই কী / মান ব্যবহার করে সেটিংস নামক একটি অ্যারেতে রাখুন।

খুব সহজ এবং সত্যই সহজ

// সমস্ত সেটিংস পান
$ সেটিংস = getGlobalSettings ();


// ব্যবহারকারী থিম পছন্দ প্রয়োগ করুন
$ থিম_চয়েস = $ সেটিংস ['থিম'];

.. ইত্যাদি ইত্যাদি ....




ফাংশন গ্লোবালসেটিংস ()

    $ dbc = mysqli_connect (wds_db_host, wds_db_user, wds_db_pass) বা মরা ("মাইএসকিউএল ত্রুটি:"। মাইএসকিলি_অরর ());
    mysqli_select_db ($ dbc, wds_db_name) বা মরা ("মাইএসকিউএল ত্রুটি:"। মাইসকিলি_অরর ());
    $ মাইএসকিউএল = "সিস্টেম সেটিং থেকে নির্বাচন করুন";
    $ ফলাফল = mysqli_query ($ ডিবিসি, $ মাইএসকিউএল);
    যখন ($ সারি = mysqli_fetch_array ($ ফলাফল)) 
        {
        $ সেটিংস [$ সারি ['আইটেম']] = $ সারি ['মান']; // পুশের দরকার নেই
        }
    mysqli_close ($ DBC);
রিটার্ন $ সেটিংস;
}


সুতরাং অন্য পোস্টগুলির মতো ব্যাখ্যা করুন ... পিএইচপি-তে আপনি যখন ব্যবহার করছেন তখন কোনও অ্যারে "পুশ" করার দরকার নেই

কী => মান

এবং ... প্রথমে অ্যারে সংজ্ঞায়িত করার দরকার নেই।

$ অ্যারে = অ্যারের ();

সংজ্ঞা বা ধাক্কা দেওয়ার দরকার নেই Don't কেবলমাত্র assign অ্যারে [$ কী] = assign মান নির্ধারণ করুন; এটি স্বয়ংক্রিয়ভাবে একই সাথে একটি ধাক্কা এবং একটি ঘোষণা।

আমি অবশ্যই এটি যুক্ত করতে হবে সুরক্ষা কারণে, (পি) ওওর (এইচ) এলপলেস (পি) রোটেশন, আমি ডামিদের জন্য প্রোগ্রামিংয়ের অর্থ, পিএইচপি .... মানে তিনি আপনাকে পরামর্শ দিয়েছিলেন যে আপনি কেবলমাত্র আমার উদ্দেশ্যটির জন্যই এই ধারণাটি ব্যবহার করুন। অন্য যে কোনও পদ্ধতি সুরক্ষা ঝুঁকি হতে পারে। ওখানে, আমার দাবি অস্বীকার!



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);

// অ্যারে প্রিন্ট করে ['কী 1' => "মান 1", 'কী 2' => "মান 2"]


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

উদাহরণ অ্যারে_মার্জ () ....

$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, মূল্য) ব্যবহার করে এবং তারপরে কার্যকর করে array_push($GET, 1)। ফলাফল = [0] -> 1, [এক] -> 1
কেকুসেমু

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'
);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.