2017-04-21 1 views
1

Hallo, ich arbeite an einigen Array-Operationen mit Schleife.Array-Schlüsselwert mit dem angegebenen Namen vergleichen

Ich möchte Array-Schlüsselwert mit dem angegebenen Namen vergleichen.

Aber ich bin nicht in der Lage, genaue Ausgabe zu erhalten.

Das ist mein Array:

Array 
(
    [0] => Array 
     (
      [label] => 
      [value] => 
     ) 

    [1] => Array 
     (
      [label] => 3M 
      [value] => 76 
     ) 

    [2] => Array 
     (
      [label] => Test 
      [value] => 4 
     ) 

    [3] => Array 
     (
      [label] => Test1 
      [value] => 5 
     ) 

    [4] => Array 
     (
      [label] => Test2 
      [value] => 6 
     ) 
) 

Das ist mein varriable, die ich vergleichen müssen: $test_name = "Test2";

Below-Code, die ich versucht habe:

$details // getting array in this varriable 
if($details['label'] == $test_name) 
{ 
    return $test_name; 
} 
else 
{ 
    return "NotFound"; 
} 

Aber jedes Mal ist es re verwandelt NotFound.

Nicht bekommen, was genau Problem.

+0

Geben Sie Ihren Schleife Code kann so durchlaufen und eine bestimmte Antwort geben. – Hacker

+0

@Manthan Dave aktualisiert die Antwort – Sathish

Antwort

4

@Manthan Dave versuchen mit array_column und in_array() wie unten:

<?php 
if(in_array($test_name, array_column($details, "label"))){ 
    return $test_name; 
} 
else 
{ 
    return "NotFound"; 
} 
3

$details ist ein mehrdimensionales Array, aber Sie versuchen, wie ein einfaches Array darauf zuzugreifen.
Sie müssen auch Schleife durch:

foreach ($details as $item) { 
    if($item['label'] == $test_name) 
    { 
     return $test_name; 
    } 
    else 
    { 
     return "NotFound"; 
    } 
} 

ich Ihr Array hoffen nie ein Label NotFound ... :)

+0

bereits versucht, kehrt gleich. Nicht gefunden –

2

Sie haben Array innerhalb Array versuchen, mit unten enthalten kann,

if($details[4]['label'] == $test_name) 
{ 
    return $test_name; 
} 
else 
{ 
    return "NotFound"; 
} 

Obwohl foreach-Schleife arbeiten sollte, aber wenn sie nicht versuchen, so,

for($i=0; $i<count($details); $i++){ 

    if($details[$i]['label'] == $test_name) 
    { 
     return $test_name; 
    } 
    else 
    { 
     return "NotFound"; 
    } 

} 
2

Verwenden Sie einfach in_array und array_column ohne Verwendung von foreach Schleife als

if (in_array($test_name,array_column($details, 'label'))) 
{ 
    return $test_name; 
} 
else 
{ 
    return "NotFound"; 
} 
+0

gleiche Logik: D jetzt, was zu tun ist? –

+0

möchten Sie dynamisch tun –

+0

@Saty aber Ihre Antwort ist nicht korrekt, wird es nichts ausgeben –

2

Sie brauchen nur zu überprüfen, Die if-Bedingung wie unten, denn sonst treffen sie sich zum ersten Mal, es wird das "notfound" zurückgeben, dann wird es nicht ausgeführt.

$result = 'NotFound'; 
foreach ($details as $item) { 
    if($item['label'] == $test_name) 
    { 
     $result = $test_name; 
    } 
} 
return $result; 

oder

$result = 'NotFound'; 
if (in_array($test_name,array_column($details, 'label'))) 
{ 
    $result = $test_name; 
} 
return $result; 
+0

Ihre Antwort ist nicht korrekt, es wird nichts für den 1. Fall ausgegeben –

+0

warum? können Sie erklären? – Sathish

+1

jetzt gut, Sie haben den Spaltennamen 'Vorname' auf 'Label' –

2

Traverse Ihr Array wie folgt,

array_walk($array, function($v) use($test_name){echo $v['label'] == $test_name ? $test_name : "NotFound";}); 
+1

Daumen hoch für Array-Spaziergang bearbeitet – Sathish

Verwandte Themen