सरणी मान मौजूद है या नहीं, इसकी जांच कैसे करें?


109

मैं कैसे जांच कर सकता हूं कि $something['say']इसका मूल्य है 'bla'या नहीं 'omg'?

$something = array('say' => 'bla', 'say' => 'omg');

45
किसी सरणी में कुंजियाँ अद्वितीय होनी चाहिए।
गोमो

जवाबों:


113

का उपयोग कर if?

if(isset($something['say']) && $something['say'] == 'bla') {
    // do something
}

Btw, आप sayदो बार कुंजी के साथ एक मान निर्दिष्ट कर रहे हैं , इसलिए आपके सरणी का परिणाम केवल एक मान के साथ होगा।


289

आप PHP in_array फ़ंक्शन का उपयोग कर सकते हैं

if( in_array( "bla" ,$yourarray ) )
{
    echo "has bla";
}

7
क्या समरूप कुंजियों के साथ एक सरणी होना संभव है? क्या दूसरा मूल्य मूल को अधिलेखित नहीं करेगा?
1

47

का उपयोग करते हुए: in_array()

$search_array = array('user_from','lucky_draw_id','prize_id');

if (in_array('prize_id', $search_array)) {
    echo "The 'prize_id' element is in the array";
}

यहाँ उत्पादन है: The 'prize_id' element is in the array


का उपयोग करते हुए: array_key_exists()

$search_array = array('user_from','lucky_draw_id','prize_id');

if (array_key_exists('prize_id', $search_array)) {
    echo "The 'prize_id' element is in the array";
}

उत्पादन नही


अंत में, array_key_exists()एक साधारण सरणी के साथ काम नहीं करता है। यह केवल यह जानने के लिए है कि कोई सरणी कुंजी मौजूद है या नहीं। in_array()इसके बजाय उपयोग करें ।

यहाँ अधिक उदाहरण है:

<?php
/**++++++++++++++++++++++++++++++++++++++++++++++
 * 1. example with assoc array using in_array
 *
 * IMPORTANT NOTE: in_array is case-sensitive
 * in_array — Checks if a value exists in an array
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if (in_array('omg', $something)) {
    echo "|1| The 'omg' value found in the assoc array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 2. example with index array using in_array
 *
 * IMPORTANT NOTE: in_array is case-sensitive
 * in_array — Checks if a value exists in an array
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('bla', 'omg');
if (in_array('omg', $something)) {
    echo "|2| The 'omg' value found in the index array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 3. trying with array_search
 *
 * array_search — Searches the array for a given value 
 * and returns the corresponding key if successful
 *
 * DOES NOT WORK FOR MULTI-DIMENSIONAL ARRAY
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if (array_search('bla', $something)) {
    echo "|3| The 'bla' value found in the assoc array ||";
}

/**++++++++++++++++++++++++++++++++++++++++++++++
 * 4. trying with isset (fastest ever)
 *
 * isset — Determine if a variable is set and 
 * is not NULL
 *++++++++++++++++++++++++++++++++++++++++++++++
 */
$something = array('a' => 'bla', 'b' => 'omg');
if($something['a']=='bla'){
    echo "|4| Yeah!! 'bla' found in array ||";
}

/**
 * OUTPUT:
 * |1| The 'omg' element value found in the assoc array ||
 * |2| The 'omg' element value found in the index array ||
 * |3| The 'bla' element value found in the assoc array ||
 * |4| Yeah!! 'bla' found in array ||
 */
?>

यहाँ है PHP DEMO


array_key_exists()सरणी कुंजियों के लिए चेक, जबकि बाद $search_arrayमें साहचर्य सरणी शामिल हैं। कोई शक नहीं कि यह काम नहीं करेगा। आपको array_flip()इसे पहले करना चाहिए ।
चय 22


6

यह जाँचने के लिए कि क्या सूचकांक परिभाषित है: isset($something['say'])


मैं इस उत्तर की मंशा नहीं समझता। सूचकांक के मूल्य की जांच करने का उद्देश्य कैसे प्राप्त होता है?
ब्रैड कोच

अच्छा प्रश्न। यह प्रश्न का उत्तर बिल्कुल नहीं देता, क्योंकि यह लिखा गया है। मुझे याद नहीं है, लेकिन चूंकि मैंने मूल रूप से पूछे जाने के 3 मिनट बाद जवाब दिया था, इसलिए मुझे लगता है कि ओपी ने अपने मूल प्रश्न को संपादित करने से पहले इसे और अधिक स्पष्ट करने के लिए, प्रारंभिक संपादन कटऑफ के भीतर संपादित किया। यदि इसका कोई मतलब निकले तो।
इको

5

आप परीक्षण कर सकते हैं कि क्या किसी सरणी में एक निश्चित तत्व है या नहीं (isset) या कभी-कभी इससे भी बेहतर array_key_exists () (दस्तावेज़ीकरण में अंतर बताते हैं)। यदि आप सुनिश्चित नहीं कर सकते हैं कि सरणी में सूचकांक के साथ एक तत्व है 'तो' आपको यह परीक्षण करना चाहिए कि पहले या आपको 'चेतावनी: अपरिभाषित सूचकांक ....' संदेश मिल सकता है।

परीक्षण के लिए कि क्या तत्व का मूल्य एक स्ट्रिंग के बराबर है जो आप == या (फिर कभी-कभी बेहतर) पहचान ऑपरेटर === का उपयोग कर सकते हैं जो टाइप जुगाड़ की अनुमति नहीं देता है ।

if( isset($something['say']) && 'bla'===$something['say'] ) {
  // ...
}

array_key_exists हमेशा बेहतर समाधान है
AjayR

5

in_array () ठीक है यदि आप केवल जाँच कर रहे हैं, लेकिन यदि आपको यह जाँचने की आवश्यकता है कि कोई मान मौजूद है और संबंधित कुंजी को वापस करना है, तो array_search एक बेहतर विकल्प है।

$data = [
    'hello',
    'world'
];

$key = array_search('world', $data);

if ($key) {
    echo 'Key is ' . $key;
} else {
    echo 'Key not found';
}

यह "कुंजी 1 है" प्रिंट करेगा


3

बस PHP फ़ंक्शन का उपयोग करें array_key_exists()

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

3
<?php
if (in_array('your_variable', $Your_array)) {
    $redImg = 'true code here';
} else {
    $redImg = 'false code here';
} 
?>

1
एक बेहतर उत्तर में आमतौर पर कोड के अलावा एक स्पष्टीकरण होता है। मुझे विश्वास है कि ऐसा करने से आपके उत्तर में सुधार होगा!
अमित

1

ठीक है, पहले एक साहचर्य सरणी से केवल एक बार परिभाषित की गई कुंजी हो सकती है, इसलिए यह सरणी कभी मौजूद नहीं होगी। अन्यथा, बस in_array()यह निर्धारित करने के लिए उपयोग करें कि क्या विशिष्ट सरणी तत्व संभावित समाधानों की एक सरणी में है।


1
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

सुई के रूप में एक सरणी के साथ in_array in_array () का एक और उपयोग

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found\n";
}

if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found\n";
}

if (in_array('o', $a)) {
    echo "'o' was found\n";
}
?>

1

मान लें कि आप एक साधारण सरणी का उपयोग कर रहे हैं

। अर्थात

$MyArray = array("red","blue","green");

आप इस फ़ंक्शन का उपयोग कर सकते हैं

function val_in_arr($val,$arr){
  foreach($arr as $arr_val){
    if($arr_val == $val){
      return true;
    }
  }
  return false;
}

उपयोग:

val_in_arr("red",$MyArray); //returns true
val_in_arr("brown",$MyArray); //returns false
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.