মান অনুসারে পিএইচপি বহুমাত্রিক অ্যারে অনুসন্ধান


332

আমার একটি অ্যারে রয়েছে যেখানে আমি অনুসন্ধান করতে uidএবং অ্যারের কীটি পেতে চাই ।

উদাহরণ

ধরুন আমাদের কাছে নিম্নলিখিত 2-মাত্রিক অ্যারে রয়েছে:

$userdb = array(
    array(
        'uid' => '100',
        'name' => 'Sandra Shush',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '5465',
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '40489',
        'name' => 'Michael',
        'pic_square' => 'urlof40489'
    )
);

ফাংশন কল search_by_uid(100)(প্রথম ব্যবহারকারীর uid) ফিরে আসা উচিত 0

ফাংশন কলটি search_by_uid(40489)ফিরে আসবে 2

আমি লুপগুলি তৈরির চেষ্টা করেছি, তবে আমি একটি দ্রুত সম্পাদনকারী কোড চাই।


আকর্ষণীয়ভাবে আন্ডারস্কোর (এবং লোড্যাশ) গ্রন্থাগারিকরা জাভাস্ক্রিপ্টে এই ফাংশনটি যুক্ত করে ...
এরিচবিএসচুল্জ

9
আমি কয়েকটি জবাবের পারফরম্যান্স পরীক্ষা করার জন্য একটি স্ক্রিপ্ট লিখেছিলাম। এটি 500k-সদস্য অ্যারে তৈরি করে এবং সর্বশেষ সদস্যের একটি মানের জন্য এটি অনুসন্ধান করে। আমি গৃহীত উত্তরের মতো একটি ফাংশন দুটি array_columnওয়ান-লাইনারের উত্তরের সাথে তুলনা করেছি । আমি কীগুলিই নয়, প্রকৃত আবিষ্কার হওয়া অ্যারে ফিরিয়ে আনতে আমি তাদের সকলকে সংশোধন করেছি কারণ সাধারণত এটিই আমার ব্যবহারের ক্ষেত্রে। ফাংশন পদ্ধতিটি প্রতিটি পদ্ধতির জন্য ০.০61১, সার্চ-কল ০.১৮৮ and এবং কী-কল ০.৮৮৮ গড় মাইক্রো বিলম্বিত হয়েছে 1000 রানেরও বেশি।
জোশ

উত্তর:


474
function searchForId($id, $array) {
   foreach ($array as $key => $val) {
       if ($val['uid'] === $id) {
           return $key;
       }
   }
   return null;
}

এটি কাজ করবে। আপনার এটিকে এটি বলা উচিত:

$id = searchForId('100', $userdb);

এটি জেনে রাখা গুরুত্বপূর্ণ যে আপনি যদি ===অপারেটর ব্যবহার করছেন তবে তুলনামূলক প্রকারগুলি ঠিক একই রকম হতে হবে, উদাহরণস্বরূপ আপনাকে অনুসন্ধান করতে হবেstring বা কেবল ==পরিবর্তে ব্যবহার করতে হবে ===

অ্যাঙ্গোরু উত্তরের ভিত্তিতে । পিএইচপি ( >= 5.5.0) এর পরবর্তী সংস্করণগুলিতে আপনি ওয়ান-লাইনার ব্যবহার করতে পারেন।

$key = array_search('100', array_column($userdb, 'uid'));

এখানে ডকুমেন্টেশন রয়েছে: http://php.net/manual/en/function.array-column.php


8
অ্যারে_ কলামের স্থানে অ্যারে_ম্যাপ ব্যবহার করে একটি লাইনের মধ্যে পিএইচপি 5.5 ছাড়াই আপনি এটি করতে সক্ষম হবেন। শুধু প্রতিস্থাপন array_column($userdb, 'uid')সঙ্গেarray_map(function($v){return $v['uid'];},$userdb)
জেসি সবুজ

1
হ্যাঁ, আপনি ঠিক বলেছেন। ল্যাম্বদা ফাংশনগুলি পিএইচপি 5.3 থেকে পাওয়া যায়। এবং ভাল array_search, তাই না?
জাকুব ট্রুনেয়েক

@ ইঙ্গুরু আমি মনে করি আসল সমাধানটি ( foreachলুপ) দ্রুত সম্পাদন করবে কারণ এটি ম্যাচটি পাওয়া মাত্রই বন্ধ হয়ে যায়। নতুন সমাধানটি একবার বের করার জন্য পুরো অ্যারেতে পুনরাবৃত্তি করতে হবে array_column, তারপরে অনুসন্ধানটি সম্পাদন করতে দ্বিতীয় বার লুপ করুন (এটি কোনও মিল খুঁজে না পাওয়া পর্যন্ত)। নতুন সমাধানটি পড়া সহজ, আরও সংক্ষিপ্ত, তবে ওপি বিশেষত একটি সমস্যা হিসাবে পারফরম্যান্স এনেছে
বিটলজিয়াস

@ JakubTruneček প্রশ্নে দেওয়া একই অ্যারেটির সাথে আমার কিছু করার আছে। আমি আইডি পাস করে অ্যারের থেকে ব্যবহারকারীর নাম চাই। ফাংশন সন্ধানের ব্যবহারকারীর নাম (40489) 'মাইকেল' ফিরিয়ে দেওয়া উচিত। এটা কিভাবে সম্ভব?
অশোক গুজ্জর

@ JakubTruneček হাই আমি আমার কোডটিতে এই সমস্যার মুখোমুখি হয়েছি তবে আমার বেশ আলাদা জিনিস আছে। আমার ক্ষেত্রে 'ইউআইডি' মান একাধিকবার উপস্থিত থাকে তাই আমাকে প্রতিষ্ঠিত কীটির অ্যারেগুলি নেওয়া দরকার।
ভাভিন থুমার

314

আপনি যদি (পিএইচপি 5> = 5.5.0) ব্যবহার করেন তবে এটি করার জন্য আপনাকে নিজের ফাংশনটি লিখতে হবে না, কেবল এই লাইনটি লিখুন এবং এটি সম্পন্ন হয়েছে।

আপনি যদি কেবল একটি ফলাফল চান:

$key = array_search(40489, array_column($userdb, 'uid'));

একাধিক ফলাফলের জন্য

$keys = array_keys(array_column($userdb, 'uid'), 40489);

আপনি যদি মন্তব্যগুলির সাথে উল্লেখযোগ্য হিসাবে একটি সাহসী অ্যারে থাকেন তবে আপনি এটির সাথে এটি করতে পারেন:

$keys = array_keys(array_combine(array_keys($userdb), array_column($userdb, 'uid')),40489);

আপনি যদি পিএইচপি <5.5.0 ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন এই ব্যাকপোর্টটি , ধন্যবাদ রামসে!

আপডেট: আমি কয়েকটি সাধারণ মানদণ্ড তৈরি করেছি এবং একাধিক ফলাফলের ফর্মটি জাকুব কাস্টম ফাংশনের চেয়েও দ্রুততম বলে মনে হচ্ছে!


আমি যদি যে মূল্যটি অনুসন্ধান করছি (যদি এই উদাহরণটি 40489 হয়) তবে এটি একবারে আরও উপস্থিত হয় এবং আমি উপস্থিত সমস্ত কীগুলি পেতে চাই?
দিমিত্রিস পাপেজর্জিও

যদি 40489 মানটি আরও উপস্থিত হয় তবে অ্যারেতে একবার ফাংশনটি কীগুলির একটি অ্যারে ফিরিয়ে দেবে ... ?? @angoru
jishan

আপনি যদি একাধিক ফলাফলের জন্য দ্বিতীয় কেস ব্যবহার করেন তবে আপনি কীগুলির একটি অ্যারে পাবেন।
অ্যাঙ্গোরু

2
Me Userdb- র কীটি 0,1, 2 ইত্যাদি হিসাবে শুরু না হলে এটি আমার পক্ষে কাজ করে না এবং কীটি 1234,4566 হয় বলে থাকে। অ্যারে_সার্চের পরে প্রাপ্ত কীগুলি সর্বদা 0,1,2 এবং তাই থাকে চালু
কৌশতুভ

1
এটি কোনও সহযোগী অ্যারে নিয়ে কাজ করবে না, তবে আপনি এটির মতো পেতে পারেন: array_search(40489, array_combine(array_keys($userdb), array_column($userdb, 'uid')))
জন মেলর

32

পিএইচপি (> = 5.5.0) এর পরবর্তী সংস্করণগুলিতে আপনি এই ওয়ান-লাইনারটি ব্যবহার করতে পারেন:

$key = array_search('100', array_column($userdb, 'uid'));

অ্যারে_ কলামের ফলাফলকে সুনির্দিষ্ট ভেরিয়েবল এড়িয়ে অ্যারে_ক্লোনম এড়াতে প্রতিটি ফলাফলের জন্য ডাকা হবে।
মায়কন

26

জাকুবের দুর্দান্ত উত্তরটি তৈরি করা , এখানে একটি আরও সাধারণ অনুসন্ধান রয়েছে যা কীটি নির্দিষ্ট করার অনুমতি দেবে (কেবলমাত্র ইউআইডি নয়):

function searcharray($value, $key, $array) {
   foreach ($array as $k => $val) {
       if ($val[$key] == $value) {
           return $k;
       }
   }
   return null;
}

ব্যবহার: $results = searcharray('searchvalue', searchkey, $array);


এটি খুব সহায়ক, আমার মনে হচ্ছে আমি এই সমাধানটি ব্যবহার করে আমার সমস্যার সমাধান করার পক্ষে আছি তবে আমার এখনও কিছু সমস্যা আছে। আপনি সম্ভবত অন্তর্দৃষ্টি দিতে পারেন? প্রশ্ন এখানে পাওয়া যাবে: stackoverflow.com/questions/28704644/...
jasenmp

19

আমি জানি এটি ইতিমধ্যে উত্তর দেওয়া হয়েছিল, তবে আমি এটি ব্যবহার করেছি এবং আমার কোডে এটি আরও কিছুটা প্রসারিত করেছি যাতে আপনি কেবল uid দ্বারা অনুসন্ধান না করে। আমি কেবল অন্য কারও জন্য এটি ভাগ করতে চাই যাদের এই কার্যকারিতাটির প্রয়োজন হতে পারে।

এখানে আমার উদাহরণ এবং দয়া করে মনে রাখবেন এটি আমার প্রথম উত্তর। আমি পরম অ্যারেটি বের করেছিলাম কারণ আমার কেবলমাত্র একটি নির্দিষ্ট অ্যারে অনুসন্ধান করা দরকার, তবে আপনি সহজেই এটি যুক্ত করতে পারেন I

এছাড়াও, আমার পরিস্থিতিতে অন্যান্য ক্ষেত্রগুলি অনুসন্ধানের ফলাফল হিসাবে ফিরে আসার একাধিক কী থাকতে পারে যা অনন্য নয় unique

 /**
     * @param array multidimensional 
     * @param string value to search for, ie a specific field name like name_first
     * @param string associative key to find it in, ie field_name
     * 
     * @return array keys.
     */
     function search_revisions($dataArray, $search_value, $key_to_search) {
        // This function will search the revisions for a certain value
        // related to the associative key you are looking for.
        $keys = array();
        foreach ($dataArray as $key => $cur_value) {
            if ($cur_value[$key_to_search] == $search_value) {
                $keys[] = $key;
            }
        }
        return $keys;
    }

পরে, আমি অন্য লেখার মূল্য এবং এসোসিয়েটিভ কীটি অনুসন্ধান করার অনুমতি দেওয়ার জন্য এটি লিখেছিলাম। সুতরাং আমার প্রথম উদাহরণ আপনাকে কোনও নির্দিষ্ট এসোসিয়েটিভ কীতে কোনও মান সন্ধান করতে এবং সমস্ত ম্যাচ ফেরত দেওয়ার অনুমতি দেয়।

এই দ্বিতীয় উদাহরণ শো আপনি যেখানে একটি মান ( 'টেলর') একটি নির্দিষ্ট মিশুক কী (FIRST_NAME) পাওয়া যায় এবং অন্য মান (সত্য) অন্য মিশুক কী (নিযুক্ত) পাওয়া যায়, এবং সমস্ত ম্যাচ (কী ফেরৎ যেখানে নামের প্রথম অংশ ব্যক্তিদের 'টেলর' এবং নিয়োগপ্রাপ্ত)।

/**
 * @param array multidimensional 
 * @param string $search_value The value to search for, ie a specific 'Taylor'
 * @param string $key_to_search The associative key to find it in, ie first_name
 * @param string $other_matching_key The associative key to find in the matches for employed
 * @param string $other_matching_value The value to find in that matching associative key, ie true
 * 
 * @return array keys, ie all the people with the first name 'Taylor' that are employed.
 */
 function search_revisions($dataArray, $search_value, $key_to_search, $other_matching_value = null, $other_matching_key = null) {
    // This function will search the revisions for a certain value
    // related to the associative key you are looking for.
    $keys = array();
    foreach ($dataArray as $key => $cur_value) {
        if ($cur_value[$key_to_search] == $search_value) {
            if (isset($other_matching_key) && isset($other_matching_value)) {
                if ($cur_value[$other_matching_key] == $other_matching_value) {
                    $keys[] = $key;
                }
            } else {
                // I must keep in mind that some searches may have multiple
                // matches and others would not, so leave it open with no continues.
                $keys[] = $key;
            }
        }
    }
    return $keys;
}

ফাংশন ব্যবহার

$data = array(
    array(
        'cust_group' => 6,
        'price' => 13.21,
        'price_qty' => 5
    ),
    array(
        'cust_group' => 8,
        'price' => 15.25,
        'price_qty' => 4
    ),
    array(
        'cust_group' => 8,
        'price' => 12.75,
        'price_qty' => 10
    )
);

$findKey = search_revisions($data,'8', 'cust_group', '10', 'price_qty');
print_r($findKey);

ফলাফল

Array ( [0] => 2 ) 

10

দেখে মনে হচ্ছে অ্যারে_ ফিল্টার এটির জন্য উপযুক্ত সমাধান হবে ...

$userdb=Array
(
    (0) => Array
        (
            (uid) => '100',
            (name) => 'Sandra Shush',
            (url) => 'urlof100'
        ),

    (1) => Array
        (
            (uid) => '5465',
            (name) => 'Stefanie Mcmohn',
            (pic_square) => 'urlof100'
        ),

    (2) => Array
        (
            (uid) => '40489',
            (name) => 'Michael',
            (pic_square) => 'urlof40489'
        )
);

পিএইচপি কোড

<?php 
$search = 5465;
$found = array_filter($userdb,function($v,$k) use ($search){
  return $v['uid'] == $search;
},ARRAY_FILTER_USE_BOTH) // With latest PHP third parameter is mandatory.. Available Values:- ARRAY_FILTER_USE_BOTH OR ARRAY_FILTER_USE_KEY  

$values= print_r(array_value($found)); 
$keys =  print_r(array_keys($found)); 

@BEJAM শিব প্রসাদ আপনি এই সঙ্গে আউট আমাকে সাহায্য করুন পারে stackoverflow.com/questions/44721195/... ?
ভালে

একটি ত্রুটি দেখায়:syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ';'
শিহাস

আপনি কি দয়া করে আরও তথ্য পেস্ট করুন মানে কোন লাইন এবং আপনার কোড এবং অ্যারে কাঠামো।
বেজগাম শিব প্রসাদ

@ শিহস আমি উত্তর আপডেট করেছি, আমি নিশ্চিত যে এটি সমাধান হয়ে যাবে।
বেজগাম শিব প্রসাদ

9

আমি বর্ণনা ফাংশন অ্যারে_সার্চ নীচের উদাহরণগুলির মধ্যে একটিতে পরিবর্তন করেছি । ফাংশনটি searchItemsByKeyবহুমাত্রিক অ্যারে (এন স্তর) থেকে value কী দ্বারা সমস্ত মান (গুলি) প্রদান করে। সম্ভবত, এটি কারও জন্য কার্যকর হবে। উদাহরণ:

 $arr = array(
     'XXX'=>array(
               'YYY'=> array(
                    'AAA'=> array(
                          'keyN' =>'value1'
                   )
               ),
              'ZZZ'=> array(
                    'BBB'=> array(
                          'keyN' => 'value2'
                   )
               )
              //.....
           )
);


$result = searchItemsByKey($arr,'keyN');

print '<pre>';
print_r($result);
print '<pre>';
// OUTPUT
Array
(
  [0] => value1
  [1] => value2
)

ফাংশন কোড:

function searchItemsByKey($array, $key)
{
   $results = array();

  if (is_array($array))
  {
    if (isset($array[$key]) && key($array)==$key)
        $results[] = $array[$key];

    foreach ($array as $sub_array)
        $results = array_merge($results, searchItemsByKey($sub_array, $key));
  }

 return  $results;
}

7

এখানে একই জন্য একটি লাইনার,

$pic_square = $userdb[array_search($uid,array_column($userdb, 'uid'))]['pic_square'];

3

যদিও এটি একটি পুরানো প্রশ্ন এবং একটি স্বীকৃত উত্তর রয়েছে, ভেবেছি আমি গৃহীত উত্তরটিতে একটি পরিবর্তন প্রস্তাব করব .. সুতরাং প্রথমে আমি সম্মত উত্তরটি এখানে সঠিক বলে সম্মত করছি।

function searchArrayKeyVal($sKey, $id, $array) {
   foreach ($array as $key => $val) {
       if ($val[$sKey] == $id) {
           return $key;
       }
   }
   return false;
}

পরিবর্তে ফাংশনে একটি প্যারামিটার দিয়ে 'uid' প্রিসেটটি প্রতিস্থাপন করা হচ্ছে, সুতরাং এখন নীচের কোডটিতে কল করার অর্থ আপনি একাধিক অ্যারে প্রকারের মধ্যে একটি ফাংশনটি ব্যবহার করতে পারেন। ছোট পরিবর্তন, তবে একটি যে সামান্য পার্থক্য করে।

    // Array Data Of Users
$userdb = array (
    array ('uid' => '100','name' => 'Sandra Shush','url' => 'urlof100' ),
    array ('uid' => '5465','name' => 'Stefanie Mcmohn','url' => 'urlof100' ),
    array ('uid' => '40489','name' => 'Michael','url' => 'urlof40489' ),
);

// Obtain The Key Of The Array
$arrayKey = searchArrayKeyVal("uid", '100', $userdb);
if ($arrayKey!==false) {
    echo "Search Result: ", $userdb[$arrayKey]['name'];
} else {
    echo "Search Result can not be found";
}

পিএইচপি ফিডল উদাহরণ


আমি এসওএফ ব্যবহার করি তার অন্য কারণ ... গুগল করা সহজ এবং নিজের কোড বা আমার মনে
ক্রুদ্ধ 84

বিটিডাব্লু, আপনি কোডটিতে ফলাফলটি সেট করছেন nullএবং তারপরে আপনি এর সাথে তুলনা করছেন false
তাহা পাকসু

পরিবর্তে মিথ্যা প্রত্যাবর্তনের সাথে সংশোধন করা হয়েছে, তবে বুলিয়ানদের জন্য চেক করার ক্ষেত্রে এটি বাতিল হতে পারে
রাগান্বিত 84

3

আমি নীচের অ্যারেতে থা পরীক্ষা করতে চাই $arrসাব অ্যারেগুলিতে 'এবিসি' রয়েছে কি না

$arr = array(
    array(
        'title' => 'abc'
    )
);

তাহলে আমি এটি ব্যবহার করতে পারি

$res = array_search('abc', array_column($arr, 'title'));
if($res == ''){
    echo 'exists';
} else {
    echo 'notExists';
}

আমি মনে করি এটি সংজ্ঞায়নের সবচেয়ে সহজ উপায় simple


1

আমাকে আন ফাংশনটি ব্যবহার করতে হয়েছিল যা অ্যারের প্রতিটি উপাদান খুঁজে পায়। তাই আমি জাকুব ট্রুনেয়েকের কাজটি অনুসরণ করে সংশোধন করেছি:

function search_in_array_r($needle, $array) {
    $found = array();
    foreach ($array as $key => $val) {
        if ($val[1] == $needle) {
            array_push($found, $val[1]);
        }
    }
    if (count($found) != 0)
        return $found;
    else
        return null;
}

1
/**
 * searches a simple as well as multi dimension array
 * @param type $needle
 * @param type $haystack
 * @return boolean
 */
public static function in_array_multi($needle, $haystack){
    $needle = trim($needle);
    if(!is_array($haystack))
        return False;

    foreach($haystack as $key=>$value){
        if(is_array($value)){
            if(self::in_array_multi($needle, $value))
                return True;
            else
               self::in_array_multi($needle, $value);
        }
        else
        if(trim($value) === trim($needle)){//visibility fix//
            error_log("$value === $needle setting visibility to 1 hidden");
            return True;
        }
    }

    return False;
}

1

আপনি এই ফাংশন ব্যবহার করতে পারেন; https://github.com/serhatozles/ArrayAdvancedSearch

<?php 
include('ArraySearch.php');

$query = "a='Example World' and b>='2'";

$Array = array(
'a' => array('d' => '2'),
array('a' => 'Example World','b' => '2'),
array('c' => '3'), array('d' => '4'),
);

$Result = ArraySearch($Array,$query,1);

echo '<pre>';
print_r($Result);
echo '</pre>'; 

// Output:
// Array
// (
//    [0] => Array
//        (
//            [a] => Example World
//            [b] => 2
//        )
//
// )

1
$a = ['x' => ['eee', 'ccc'], 'b' => ['zzz']];

$found = null;
$search = 'eee';

array_walk($a, function ($k, $v) use ($search, &$found) {
    if (in_array($search, $k)) {
        $found = $v;
    }
});

var_dump($found);

1

এটা চেষ্টা কর

<?php
 function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && 
            recursive_array_search($needle,$value) !== false)) {
             return $current_key;
        }
    }
    return false;
 }
 ?>

1

শুধু ভাগ করুন, সম্ভবত এটি পছন্দ করতে পারেন।

if( ! function_exists('arraySearchMulti')){
function arraySearchMulti($search,$key,$array,$returnKey=false)
{
    foreach ($array as $k => $val) {
        if (isset($val[$key])) {
            if ((string)$val[$key] == (string)$search) {
                return ($returnKey ? $k : $val);
            }
        }else{
            return (is_array($val) ? arraySearchMulti($search,$key,$val,$returnKey) : null);
        }
    }
    return null;
}}

0

এটিও চেষ্টা করে দেখুন

function search_in_array($srchvalue, $array)
{
    if (is_array($array) && count($array) > 0)
    {
        $foundkey = array_search($srchvalue, $array);
        if ($foundkey === FALSE)
        {
            foreach ($array as $key => $value)
            {
                if (is_array($value) && count($value) > 0)
                {
                    $foundkey = search_in_array($srchvalue, $value);
                    if ($foundkey != FALSE)
                        return $foundkey;
                }
            }
        }
        else
            return $foundkey;
    }
}

0
for( $i =0; $i < sizeof($allUsers); $i++)
    {   
    $NEEDLE1='firstname';
    $NEEDLE2='emailAddress';
    $sterm='Tofind';
     if(isset($allUsers[$i][$NEEDLE1]) && isset($allUsers[$i][$NEEDLE2])
        {
            $Fname= $allUsers[$i][$NEEDLE1];
            $Lname= $allUsers[$i][$NEEDLE2];

            $pos1 = stripos($Fname, $sterm);
            $pos2=stripos($Lname, $sterm);//not case sensitive 

            if($pos1 !== false ||$pos2 !== false)
            {$resultsMatched[] =$allUsers[$i];}
            else
            {   continue;}              
        }

}
Print_r($resultsMatched); //will give array for matched values even partially matched

উপরের কোডের সহায়তায় যে কোনও কলামের 2D অ্যারেতে কোনও (আংশিক মিলিত) ডেটা পাওয়া যাবে যাতে ব্যবহারকারী আইডি প্রশ্নের প্রয়োজন অনুসারে খুঁজে পাওয়া যায়।


এটি কেন প্রশ্নের উত্তর দেয় তা
লরেঞ্জ মেয়ার

উপরের কোডটির হাইট সহায়তায় যে কোনও কলাম থেকে 2D অ্যারে যে কোনও (আংশিক মিলিত) ডেটা পাওয়া যাবে যাতে প্রশ্নের আইডি হিসাবে প্রয়োজনীয় আইডি খুঁজে পাওয়া যায়
সন্দীপ শর্মা

0

@ মাইহেম তৈরি করা ফাংশনটি প্রসারিত করে, উদাহরণস্বরূপ আপনি অনুসন্ধানের স্ট্রিংয়ের অংশটি ( বেশিরভাগ ) মেলাতে চাইলে "ফাজি" অনুসন্ধানের আরও কিছু হতে পারে :

 function searchArrayKeyVal($sKey, $id, $array) {
    foreach ($array as $key => $val) {
        if (strpos(strtolower($val[$sKey]), strtolower(trim($id))) !== false) {
            return $key;
        }
    }
         return false;
 }

উদাহরণস্বরূপ অ্যারের মান নিউইয়র্কে স্বাগতম! এবং আপনি প্রথম "নিউ ইয়র্ক!" এর প্রথম উদাহরণটি চেয়েছিলেন


0
$search1 = 'demo';
$search2 = 'bob';
$arr = array('0' => 'hello','1' => 'test','2' => 'john','3' => array('0' => 'martin', '1' => 'bob'),'4' => 'demo');
foreach ($arr as $value) { 
    if (is_array($value)) { 
        if (in_array($search2, $value)) { 
            echo "successsfully";    
            //execute your code 
        }
    } else {  
        if ($value == $search1) { 
            echo "success";
        }
    }
 }

0

যদি প্রশ্ন

$a = [
     [
       "_id" => "5a96933414d48831a41901f2",
       "discount_amount" => 3.29,
       "discount_id" => "5a92656a14d488570c2c44a2",
     ],
     [
       "_id" => "5a9790fd14d48879cf16a9e8",
       "discount_amount" => 4.53,
       "discount_id" => "5a9265b914d488548513b122",
     ],
     [
       "_id" => "5a98083614d488191304b6c3",
       "discount_amount" => 15.24,
       "discount_id" => "5a92806a14d48858ff5c2ec3",
     ],
     [
       "_id" => "5a982a4914d48824721eafe3",
       "discount_amount" => 45.74,
       "discount_id" => "5a928ce414d488609e73b443",
     ],
    [
       "_id" => "5a982a4914d48824721eafe55",
       "discount_amount" => 10.26,
       "discount_id" => "5a928ce414d488609e73b443",
     ],
   ];

উত্তর:

function searchForId($id, $array) {
    $did=0;
    $dia=0;
   foreach ($array as $key => $val) {
       if ($val['discount_id'] === $id) {
           $dia +=$val['discount_amount'];
           $did++;
       }
   }
    if($dia != '') {
        echo $dia;
        var_dump($did);
    }
   return null;
};
print_r(searchForId('5a928ce414d488609e73b443',$a));

0

আমার সমাধান:

function searchArrayForField($array, $field, $value) {
    $i = 0;
    foreach ($array as &$row) {
        if ($row[$field] === $value) {
            return $i;
        }
        $i++
    }
    return '';
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.