मूल्य से PHP बहुआयामी सरणी खोज


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)(पहले उपयोगकर्ता का यूआईडी) वापस आ जाना चाहिए 0

फ़ंक्शन कॉल search_by_uid(40489)को वापस लौटना चाहिए 2

मैंने लूप बनाने की कोशिश की, लेकिन मैं एक तेज़ निष्पादन कोड चाहता हूं।


दिलचस्प बात यह है कि अंडरस्कोर (और लोर्डश) लाइब्रेरर्स इस फ़ंक्शन को जावास्क्रिप्ट में जोड़ते हैं ...
ErichBSchulz

9
मैंने कुछ उत्तरों के प्रदर्शन का परीक्षण करने के लिए एक पटकथा लिखी। यह सरणियों का 500k-सदस्य सरणी बनाता है और अंतिम सदस्य में मान के लिए इसे खोजता है। मैंने दो array_columnवन-लाइनर उत्तरों के लिए स्वीकृत उत्तर जैसे फ़ंक्शन की तुलना की । मैंने उन सभी को वास्तविक खोजे गए सरणी को वापस करने के लिए संशोधित किया, न कि केवल कुंजी के कारण, क्योंकि आमतौर पर यह मेरा उपयोग मामला है। फ़ंक्शन विधि ने 0.361, खोज-कॉल 0.184 और की-कॉल 0.189 औसत माइक्रो विलंब प्रत्येक विधि के लिए 1000 से अधिक रन बनाए।
जोश

जवाबों:


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

यह काम करेगा। आपको इसे इस तरह से कॉल करना चाहिए:

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

यह जानना महत्वपूर्ण है कि यदि आप ===ऑपरेटर का उपयोग कर रहे हैं तो तुलना के प्रकार समान हैं, इस उदाहरण में आपको खोजना है stringया केवल ==इसके बजाय उपयोग करना है===

अंगारू उत्तर के आधार पर । PHP ( >= 5.5.0) के बाद के संस्करणों में आप वन-लाइनर का उपयोग कर सकते हैं।

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

यहाँ प्रलेखन है: http://php.net/manual/en/function.array-column.php


8
आपको array_column के स्थान पर array_map का उपयोग करके एक लाइनर में PHP 5.5 के बिना भी ऐसा करने में सक्षम होना चाहिए। बस के array_column($userdb, 'uid')साथ बदलेंarray_map(function($v){return $v['uid'];},$userdb)
जेसी ग्रीन

1
हाँ, आप सही हैं। PHP 5.3 के बाद से लैम्ब्डा फ़ंक्शन उपलब्ध हैं। और बेहतर है array_search, है ना?
जकूब ट्रुनिक

@angoru मुझे लगता है कि मूल समाधान ( foreachलूप) तेजी से प्रदर्शन करेगा क्योंकि यह एक मैच मिलते ही रुक जाता है। नए समाधान को निकालने के लिए एक बार पूरे सरणी के माध्यम से चलना पड़ता है array_column, फिर इसके माध्यम से दूसरी बार खोज करने के लिए लूप करें (जब तक कि यह एक मैच न मिल जाए)। नए समाधान को पढ़ना आसान है, अधिक संक्षिप्त है, लेकिन ओपी ने विशेष रूप से प्रदर्शन को एक मुद्दे के रूप में लाया
बीटलज्यूइस

@ JakubTruneček। मुझे सवाल में दिए गए एक ही एरे से कुछ करना है। मुझे आईडी पास करके ऐरे से यूजर का नाम चाहिए। फंक्शन findUserName (40489) को 'माइकल' वापस करना चाहिए। यह कैसे संभव है?
अशोक गुर्जर

@ JakubTruneček हाय मैंने अपने कोड में इस समस्या का सामना किया है लेकिन मेरे पास काफी अलग बात है। मेरे मामले में 'यूआईडी' मूल्य कई बार मौजूद होता है, इसलिए मुझे स्थापित कुंजी का एरे प्राप्त करने की आवश्यकता होती है।
भाविन थुम्मर

314

यदि आप (PHP 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);

यदि आप PHP <5.5.0 का उपयोग कर रहे हैं, तो आप इस बैकपोर्ट का उपयोग कर सकते हैं , धन्यवाद रैमसे!

अद्यतन: मैं कुछ सरल बेंचमार्क बना रहा हूं और कई परिणाम प्रपत्र सबसे तेज़ एक प्रतीत होता है, यहां तक ​​कि जैकब कस्टम फ़ंक्शन से भी तेज!


क्या होगा यदि मैं जो मूल्य खोज रहा हूँ (इस उदाहरण में ४०४ appears ९ है) अधिक प्रतीत होता है कि एक बार और मैं उन सभी कुंजियों को प्राप्त करना चाहता हूँ जो यह दिखाई देती हैं?
दिमित्रिस पापागोरियोउ

यदि मान 40489 अधिक दिखाई देता है तो एक बार सरणी में फ़ंक्शन कुंजियों की एक सरणी लौटाएगा ... ?? @ रंगोरू
जीशान

यदि आप कई परिणामों के लिए दूसरे मामले का उपयोग करते हैं, तो आपको कुंजियों की एक सरणी मिलती है।
अंगोरू

2
यह मेरे लिए तब काम नहीं आया जब $ userdb में कुंजी 0,1, 2 आदि के रूप में शुरू नहीं हुई .. और कहें कि कुंजी 1234,4566 है आदि। array_search के बाद परिणामी कुंजी हमेशा 0,1,2 और इसी तरह होती है पर
कौस्तुव

1
यह एक साहचर्य सारणी के साथ काम नहीं करेगा, हालाँकि आप इसके आस-पास प्राप्त कर सकते हैं: array_search(40489, array_combine(array_keys($userdb), array_column($userdb, 'uid')))
जॉन मेलोर

32

PHP के बाद के संस्करणों में (> = 5.5.0) आप इस एक-लाइनर का उपयोग कर सकते हैं:

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

सरणी पर प्रत्येक परिणाम के लिए array_column से बचने के लिए बस एक विशिष्ट चर में array_column परिणाम डालें।
21

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

मुझे पता है कि यह पहले से ही उत्तर दिया गया था, लेकिन मैंने इसका इस्तेमाल किया और इसे अपने कोड में थोड़ा और बढ़ा दिया ताकि आप केवल यूआईडी द्वारा खोज न करें। मैं इसे किसी और के लिए साझा करना चाहता हूं जिसे उस कार्यक्षमता की आवश्यकता हो सकती है।

यहाँ मेरा उदाहरण है और कृपया नंगे हों यह मेरा पहला उत्तर है। मैंने परम सरणी लिया क्योंकि मुझे केवल एक विशिष्ट सरणी की खोज करने की आवश्यकता थी, लेकिन आप इसे आसानी से जोड़ सकते हैं। मैं अनिवार्य रूप से केवल यूआईडी से अधिक खोज करना चाहता था।

इसके अलावा, मेरी स्थिति में अन्य क्षेत्रों द्वारा खोज के परिणामस्वरूप लौटने के लिए कई कुंजी हो सकती हैं जो अद्वितीय नहीं हो सकती हैं।

 /**
     * @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

लगता है array_filter इसके लिए उपयुक्त समाधान होगा ...

$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 कोड

<?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 SHIVA PRASAD क्या आप मुझे इस stackoverflow.com/questions/44721195// के साथ मदद कर सकते हैं ?
वैल

एक त्रुटि दिखाता है:syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ';'
शिहास

क्या आप कृपया अधिक जानकारी पेस्ट कर सकते हैं मेरा मतलब है कि कौन सी लाइन और आपका कोड और सरणी संरचना।
BEJGAM SHIVA PRASAD

@ शीश मैंने उत्तर अपडेट किया, मुझे यकीन है कि इसे हल किया जाएगा।
BEJGAM SHIVA PRASAD

9

मैंने वर्णन फ़ंक्शन array_search के नीचे एक उदाहरण को संशोधित किया है । searchItemsByKeyबहुआयामी सरणी (N स्तरों) से $ कुंजी द्वारा फ़ंक्शन सभी मान लौटाता है। शायद, यह किसी के लिए उपयोगी होगा। उदाहरण:

 $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;
}

इसके बजाय फ़ंक्शन में एक पैरामीटर के साथ पूर्व निर्धारित 'यूआईडी' को बदलना, इसलिए अब नीचे दिए गए कोड को कॉल करने का मतलब है कि आप कई फ़ंक्शन प्रकारों में एक फ़ंक्शन का उपयोग कर सकते हैं। छोटा परिवर्तन, लेकिन एक जो मामूली अंतर बनाता है।

    // 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";
}

PHP फिडेल उदाहरण


एक और कारण मैं SOF का उपयोग करता हूं ... Google पर आसान और अपना स्वयं का कोड या कुछ और जो मुझे याद है .. अपने स्वयं के सार्वजनिक भंडार के लिए +1
Angry 84

BTW, आप परिणाम को nullकोड में सेट कर रहे हैं, फिर आप इसकी तुलना कर रहे हैं false
ताहा पाकू

बदले में झूठी वापसी के साथ सही, लेकिन ऊबियों की जाँच के लिए बेहतर हो सकता है
गुस्सा 84

3

मैं निम्नलिखित सरणी में tha की जाँच करना चाहता हूं कि $arrउप सरणियों में 'abc' मौजूद है या नहीं

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

तब मैं इसका उपयोग कर सकता हूं

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

मुझे लगता है कि यह परिभाषित करने का सबसे सरल तरीका है


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

उपरोक्त कोड की मदद से कोई भी (आंशिक रूप से मिलान किया गया) डेटा किसी भी कॉलम से 2 डी सरणी में पा सकता है, इसलिए उपयोगकर्ता आईडी को प्रश्न में आवश्यक रूप से पाया जा सकता है।


कृपया यह समझाने के लिए एक वाक्यांश जोड़ें कि यह सवाल का जवाब क्यों देता है
लॉरेंज मेयर

उपरोक्त कोड की श्वेत मदद किसी भी (आंशिक रूप से मिलान) डेटा को किसी भी कॉलम से 2 डी सरणी में पा सकती है ताकि उपयोगकर्ता आईडी को प्रश्न में आवश्यक रूप से पाया जा सके
संदीप शर्मा

0

@Mayhem द्वारा किए गए फ़ंक्शन पर विस्तार करते हुए, यह उदाहरण उस मामले में "फ़ज़ी" खोज से अधिक होगा जब आप किसी खोज स्ट्रिंग के भाग ( अधिकांश ) से मिलान करना चाहते हैं :

 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 '';
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.