কোনও এসোসিয়েটিভ পিএইচপি অ্যারে থেকে প্রথম আইটেমটি কীভাবে পাবেন?


146

আমার মতো অ্যারে থাকলে:

$array['foo'] = 400;
$array['bar'] = 'xyz';

এবং আমি প্রথম আইটেমটি অ্যারের বাইরে নিয়ে যেতে চেয়েছিলাম এর কীটি না জেনে, আমি কীভাবে এটি করব? এর জন্য কোন অনুষ্ঠান আছে?


উত্তর:


288

reset() অ্যারের ভিতরে যদি আপনার একটি উপাদান থাকে তবে আপনাকে অ্যারের প্রথম মান দেয়:

$value = reset($array);

FALSEঅ্যারে খালি থাকলে এটি আপনাকে দেয় ।


দ্রষ্টব্য:$arr = array(/* stuff */); $val = $arr? reset($arr): /* value to indicate array is empty */;
cwlenlenpoole

রিসেট ফাংশন সম্পর্কে আরও তথ্য: www.w3schools.com/php/func_array_reset.asp
পল ক্রিস জোন্স

যদি আমি কী এবং মান পেতে চাই?
টিম্বারম্যান

51

পিএইচপি <7.3

আপনি যদি অ্যারে সম্পর্কে যথেষ্ট পরিমাণে জানেন না (আপনি নিশ্চিত হন না যে প্রথম কীটি ফু বা বার কিনা ) তবে অ্যারেটি সম্ভবত, খালিও হতে পারে

সুতরাং চেক করা ভাল হবে, বিশেষত যদি এমন সম্ভাবনা থাকে যে প্রত্যাবর্তিত মানটি বুলিয়ান মিথ্যা হতে পারে:

$value = empty($arr) ? $default : reset($arr);

উপরের কোডটি ব্যবহার করে resetএবং এর পার্শ্ব প্রতিক্রিয়াও রয়েছে (এটি অ্যারের অভ্যন্তরীণ পয়েন্টারটিকে পুনরায় সেট করে) তাই আপনি array_sliceঅ্যারের প্রথম উপাদানটির অনুলিপিটি দ্রুত অ্যাক্সেস করতে পছন্দ করতে পারেন :

$value = $default;
foreach(array_slice($arr, 0, 1) as $value);

ধরে নিই যে আপনি কী এবং মান দুটি আলাদাভাবে পেতে চান , আপনাকে এখানে চতুর্থ প্যারামিটার যুক্ত করতে হবে array_slice:

foreach(array_slice($arr, 0, 1, true) as $key => $value);

জোড়া হিসাবে প্রথম আইটেমটি পেতে ( key => value):

$item = array_slice($arr, 0, 1, true);

পৃথকভাবে শেষ আইটেম, কী এবং মানটি পেতে সাধারণ পরিবর্তন :

foreach(array_slice($arr, -1, 1, true) as $key => $value);

কর্মক্ষমতা

অ্যারেটি যদি সত্যিই বড় না হয় তবে আপনার আসলে প্রয়োজন নেই array_sliceএবং বরং পুরো কী অ্যারের একটি অনুলিপি পেতে পারেন, তবে প্রথম আইটেমটি পান:

$key = count($arr) ? array_keys($arr)[0] : null;

আপনার যদি খুব বড় অ্যারে থাকে, তবে, কলটির জন্য array_keysউল্লেখযোগ্য সময় এবং মেমরির বেশি প্রয়োজন হবে array_slice(উভয় ফাংশন অ্যারে হাঁটাচ্ছে, তবে পরবর্তীকালে এটি প্রয়োজনীয় সংখ্যক আইটেম সংগ্রহ করার সাথে সাথে শেষ হবে - যা একটি)।

একটি উল্লেখযোগ্য ব্যতিক্রম হ'ল যখন আপনার কাছে প্রথম কী থাকে যা খুব বড় এবং সংশ্লেষিত বস্তুকে নির্দেশ করে। যে ক্ষেত্রে array_sliceযে প্রথম বৃহৎ বস্তুর প্রতিলিপি পড়বে, array_keysশুধুমাত্র চাবি দখল করবে।

পিএইচপি 7.3

পিএইচপি 7.3 array_key_first()পাশাপাশি প্রয়োগarray_key_last() । পার্শ্ব প্রতিক্রিয়া হিসাবে অ্যারের অভ্যন্তরীণ অবস্থাটি পুনরায় সেট না করে এগুলি স্পষ্টভাবে প্রথম এবং শেষ কীগুলি অ্যাক্সেসের জন্য সরবরাহ করা হয়।

সুতরাং পিএইচপি 7.3 প্রথম মান এর $arrayসঙ্গে ব্যবহার করা যেতে পারে

$array[array_key_first($array)];

আপনার আরও ভাল পরীক্ষা করে দেখুন যে অ্যারেটি যদিও খালি নেই, বা আপনি একটি ত্রুটি পাবেন:

$firstKey = array_key_first($array);
if (null === $firstKey) {
    $value = "Array is empty"; // An error should be handled here
} else {
    $value = $array[$firstKey];
}

@ আহমেদশেফার ভাল, অন্য উত্তরটি কেবল গৃহীত উত্তরই নয়, সেখানে আরও আট বছর রয়েছে । আমি এখানে ক্র্যাম্বস বাছাইয়ের ধরণ করছি :- ডি। তবে আত্মবিশ্বাসের ভোটের জন্য ধন্যবাদ!
এলসার্নি

1
এটি আমার কাছে এটির সেরা উত্তর বলে মনে হচ্ছে, যেহেতু কেবলমাত্র অন্য অ-অবহেলিত এক যা কী এবং মান উভয়ই দেয় যা বাতিল হওয়া ফোর্যাচ লুপ, যা বিশ্রী। অন্যান্য উত্তরগুলি কী ছাড়াই কেবল মান দেয়।
sotsnoot

1
এই উত্তরগুলি, আধুনিক পদ্ধতির পছন্দ এবং সময়ের সাথে আপডেট।
সানজিৎ বিশ্ট

@ এলসার্নি জানেন না আপনি এখনও সক্রিয় আছেন কিনা তবে আমি আটকে ছিলাম এবং এটি ভালভাবে ব্যাখ্যা করা এবং আপডেট হওয়া পোস্টটি আমাকে রক্ষা করেছিল। আপনাকে ধন্যবাদ
izk

@ আইজ্ক আমি সর্বদা সক্রিয়! :-D
এলএসর্নি

44

প্রথম পুনরাবৃত্তির বিরতিতে নকল লুপ:

$key = $value = NULL;
foreach ($array as $key => $value) {
    break;
}

echo "$key = $value\n";

বা ব্যবহার করুন each()( সতর্কতা: পিএইচপি 7.2.0 হিসাবে অবমানিত ):

reset($array);
list($key, $value) = each($array);

echo "$key = $value\n";

2
সম্ভবত কারণ রিসেট () সহজ।
এমজেএস

1
কারণ সমাধানটি আপনার কোডের প্রথম লাইনে রয়েছে তবে আপনি অন্য সম্পূর্ণ অপ্রয়োজনীয় লাইনটি লিখতে চলেছেন।
মার্কাস

21
পুনরায় সেট করুন চাবিটি ফেরত পাবে না
হ্যারিফিংক

3
'জাল লুপ' এর জন্য +1। প্রতিটি উপাদানগুলির মধ্য দিয়ে না গিয়ে আমার প্রথম উপাদানগুলির কী এবং মানটি পুনরুদ্ধার করতে হবে। reset()ফাংশনটি কেবল প্রথম মানটি পুনরুদ্ধার করতে পারে।
ফিল ক্রস

2
জাল লুপের জন্যও +1, আমাকে কীটি রাখা দরকার তাই পুনরায় সেট করা কোনও বিকল্প ছিল না
isJustMe

25

কয়েকটি বিকল্প আছে। array_shift()প্রথম উপাদানটি ফিরিয়ে দেবে, তবে এটি অ্যারের থেকে প্রথম উপাদানটিও সরিয়ে ফেলবে।

$first = array_shift($array);

current() অ্যারের অভ্যন্তরীণ মেমরি পয়েন্টারটি নির্দেশ করছে যে অ্যারের মানটি ফিরিয়ে দেবে, এটি ডিফল্টরূপে প্রথম উপাদান।

$first = current($array);

আপনি যদি এটি নিশ্চিত করতে চান যে এটি প্রথম উপাদানটির দিকে নির্দেশ করছে তবে আপনি সর্বদা ব্যবহার করতে পারেন reset()

reset($array);
$first = current($array);

3
আমি এই উত্তরটি সবচেয়ে সম্পূর্ণ হিসাবে পছন্দ করি তবে নোটটি reset()আসলে উপাদানটি ফেরত দেয়, সুতরাং $first = current($array)এটির সাথে নিরর্থক following
টম অগার

9

কেবলমাত্র আমাদের কাছে আরও কিছু বিকল্প রয়েছে: reset($arr);আপনি যদি অ্যারে পয়েন্টারটি ঠিক জায়গায় রাখার চেষ্টা না করে থাকেন তবে যথেষ্ট ভাল এবং খুব বড় অ্যারে দিয়ে এটি ন্যূনতম পরিমাণে ওভারহেড জড়িত। এটি বলেছিল, এটিতে কিছু সমস্যা রয়েছে:

$arr = array(1,2);
current($arr); // 1
next($arr);    // 2
current($arr); // 2
reset($arr);   // 1
current($arr); // 1 !This was 2 before! We've changed the array's pointer.

পয়েন্টার পরিবর্তন না করে এটি করার উপায়:

$arr[reset(array_keys($arr))]; // OR
reset(array_values($arr));

এর সুবিধাটি $arr[reset(array_keys($arr))];হ'ল এটি অ্যারেটি খালি থাকলে এটি একটি সতর্কতা উত্থাপন করে।


খুব বর্ণনামূলক উত্তর, এবং এটি অন্যদের কাছে অনেক অর্থ। ধন্যবাদ মানুষ.
জিগার 7521

7

এটি করার আর একটি সহজ ও সহজ উপায় অ্যারে_ভ্যালু ব্যবহার করে

array_values($array)[0]

reset()অ্যারে খালি থাকলে এটি মিথ্যা ফিরিয়ে আনায় এটি একটি আরও ভাল বিকল্প। আপনার সমাধান উদাহরণে উদাহরণ হিসাবে কাজ করবে না
নর্থিস

1
পিএইচপি 7+ তে এর মতো কিছু কাজ করবে:array_values($array)[0] ?? FALSE
মার্থেমি

4

ভেরিয়েবল প্রথম উপাদান পাওয়ার আগে একটি অ্যারে হয় কিনা তা পরীক্ষা করুন। গতিশীলভাবে অ্যারে তৈরি করার সময় যদি এটি নাল সেট করা থাকে আপনি একটি ত্রুটি পান।

উদাহরণ স্বরূপ:

if(is_array($array))
{
  reset($array);
  $first = key($array);
}

3

আমরা করতে পারি $first = reset($array);

পরিবর্তে

reset($array);
$first = current($array);

যেমন reset()

পুনরায় সেট করার পরে অ্যারের প্রথম উপাদানটি প্রদান করে;


2

আপনি করতে পারেন:

$values = array_values($array);
echo $values[0];

2

এটিকেটির মতো কীটি না জেনে প্রথমে আইটেমটি বের করতে রিসেট () ফাংশনটি ব্যবহার করুন।

$value = array('foo' => 400, 'bar' => 'xyz');
echo reset($value);

আউটপুট // 400


2

আপনি এটি চেষ্টা করতে পারেন।

অ্যারের প্রথম মান পেতে: -

<?php
   $large_array = array('foo' => 'bar', 'hello' => 'world');
   var_dump(current($large_array));
?>

অ্যারের প্রথম কীটি পেতে

<?php
   $large_array = array('foo' => 'bar', 'hello' => 'world');
   $large_array_keys = array_keys($large_array);
   var_dump(array_shift($large_array_keys));
?>


1

আমি প্রথম এবং শেষ মান পেতে এটি করি। এটি আরও মান সহ কাজ করে।

$a = array(
    'foo' => 400,
    'bar' => 'xyz',
);
$first = current($a);   //400
$last = end($a);    //xyz

এটি কেবল তখনই কাজ করে যখন অভ্যন্তরীণ পয়েন্টারটি প্রথম উপাদানটিতে থাকে। যদিও এটি ভাল কারণ এটি পয়েন্টারের অবস্থানটি পুনরায় সেট করে না, কেবলমাত্র পয়েন্টার ইতিমধ্যে বিশ্রাম পাওয়া গেলে এটি কাজ করে।
সিজেসি

1

পিএইচপি 7.3.0 দিয়ে শুরু করে অভ্যন্তরীণ পয়েন্টারটি পুনরায় সেট না করেই করা সম্ভব। আপনি ব্যবহার করবেন array_key_first। আপনি যদি নিশ্চিত হন যে আপনার অ্যারেতে এটির মূল্য রয়েছে তবে আপনি কেবল এটি করতে পারেন:

$first = $array[array_key_first($array)];

আরও সম্ভবত, আপনি অ্যারেটি খালি আছে এমন কেসটি পরিচালনা করতে চাইবেন:

$first = (empty($array)) ? $default : $array[array_key_first($array)];

-3

আপনি শুধু ব্যবহার করতে পারেন $array[0]। এটি আপনাকে সর্বদা প্রথম আইটেমটি দেবে

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