2012-07-19 35 views
6

में विशिष्ट मानों की गणना करें मैं एक शर्त के आधार पर अपने बहुआयामी सरणी में एक निश्चित मान प्रकट होने की संख्या को गिनने की कोशिश कर रहा हूं। यहां एक उदाहरण सरणी है;बहुआयामी सरणी

$fruit = array (
       "oranges" => array(
            "name" => "Orange", 
            "color" => "orange", 
            "taste" => "sweet", 
            "healthy" => "yes" 
          ), 
       "apples" => array(
            "name" => "Apple", 
            "color" => "green", 
            "taste" => "sweet", 
            "healthy" => "yes" 
          ), 
       "bananas" => array(
            "name" => "Banana", 
            "color" => "yellow", 
            "taste" => "sweet", 
            "healthy" => "yes" 
          ), 
       "grapes" => array(
            "name" => "Grape", 
            "color" => "green", 
            "taste" => "sweet", 
            "healthy" => "yes" 
          ) 
      ); 

मैं सभी हरे रंग का फल प्रदर्शित करना चाहते हैं, तो मैं निम्नलिखित (मुझे पता है कि अगर यह यह करने का सबसे अच्छा तरीका है जाने) कर सकते हैं;

for ($row = 0; $row < 3; $row++) { 

    if($fruit[$row]["color"]=="green") { 

     echo $fruit[$row]["name"] . '<br />'; 

    } 

} 

यह आउटपुट होगा;

Apple 
Grape 

बहुत अच्छा है कि और मैं देख सकता हूँ उनके 2 मूल्यों देखते हैं, लेकिन मैं वास्तव में कैसे प्राप्त कर सकते हैं पीएचपी फल जहां रंग हरा है की संख्या की गणना और एक चर में यह डाल करने के लिए मुझे नीचे आगे का उपयोग करने के लिए काम करने के लिए स्क्रिप्ट बाहर? जैसे मैं कुछ ऐसा करना चाहता हूं;

if($number_of_green_fruit > 1) { echo "You have more than 1 piece of green fruit"; } 

मैंने गिनती() पर एक नज़र डाली है; लेकिन मुझे 'कहां/सशर्त' खंड (एक ला एसक्यूएल) जोड़ने का कोई तरीका नहीं दिख रहा है।

किसी भी मदद की वास्तव में सराहना की जाएगी।

+0

नाम गूंजने के बजाय, गिनती करें। 0 + 1 + 1 + 1 + 1 .... – hakre

उत्तर

8
$number_of_green_fruit = 0; 
for ($row = 0; $row < 3; $row++) { 
    if($fruit[$row]["color"]=="green") { 
     $number_of_green_fruit++; 
     echo $fruit[$row]["name"] . '<br />'; 
    } 
} 
+0

मेरे से 1 सेकंड तेज ;-) +1 – DaveRandom

+0

@ डेवआरमैंडल Yep +1 आपको भी :) लगता है कि ओपी ने केवल आपका जवाब देखा है: पी – Blaster

+0

बहुत बहुत धन्यवाद तुम दोनों। – user1221488

4

आपको बस एक अतिरिक्त काउंटर है:

for ($row = $number_of_green_fruit = 0; $row < 3; $row++) { 
    if($fruit[$row]["color"]=="green") { 
     echo $fruit[$row]["name"] . '<br />'; 
     $number_of_green_fruit++; 
    } 
} 

if($number_of_green_fruit > 1) { 
    echo "You have more than 1 piece of green fruit"; 
} 
+0

मुझे अब इतना मूर्ख लगता है, बहुत बहुत धन्यवाद, मैं 9 मिनट में समाधान स्वीकार करता हूं जब यह मुझे देता है। – user1221488

8

पीएचपी बात की एक SQL where प्रकार के लिए कोई समर्थन, विशेष रूप से नहीं के साथ सरणियों की एक सरणी है। जब तुम डेटा पर पुनरावृति लेकिन आप अपने खुद के गिनती कर सकते हैं:

$count = array(); 
foreach($fruit as $one) 
{ 
    @$count[$one['color']]++; 
} 

printf("You have %d green fruit(s).\n", $count['green']); 

विकल्प अपने आप को कुछ थोड़ा सहायक समारोह लिखने के लिए है:

/** 
* array_column 
* 
* @param array $array rows - multidimensional 
* @param int|string $key column 
* @return array; 
*/ 
function array_column($array, $key) { 
    $column = array(); 
    foreach($array as $origKey => $value) { 
     if (isset($value[$key])) { 
      $column[$origKey] = $value[$key]; 
     }    
    } 
    return $column; 
} 

फिर आप सभी रंग प्राप्त कर सकते हैं:

$count = array_count_values($colors); 
printf("You have %d green fruit(s).\n", $count['green']); 
:
$colors = array_column($fruit, 'color'); 

और फिर मान गिनती

उस प्रकार का सहायक कार्य अक्सर बहुआयामी सरणी के लिए उपयोगी होता है। यह suggested as a new PHP function for PHP 5.5 भी है।

+0

+1 अच्छा एक ..... – Baba

संबंधित मुद्दे