2017-06-12 57 views
0

我有2個潛在的響應數組,我不知道我會得到哪一個。 但我知道,這將是這些下列之一:如何區分具有相同數量的1-dim數組和多dim數組?

  • 1 - 可能包含陣列上鍵和值
  • 2 - 可能只包含鍵和值

我的目標是檢查我的回答是否屬於該類別中的一個,並根據此類邏輯進行操作。

我嘗試使用PHP count()函數,但它們都返回2 - 這是相同的值

我應該檢查什麼以瞭解我得到的迴應類型?

陣列#1

array:2 [▼ 

    0 => array:2 [▼ 

     "content" => "Administrator" 
     "XSI:TYPE" => "xs:string" 

    ] 
     1 => array:2 [▼ 

     "content" => "Read Only" 
     "XSI:TYPE" => "xs:string" 

    ] 
] 

陣列#2

array:2 [▼ 

    "content" => "Read Only" 
    "XSI:TYPE" => "xs:string" 
] 
+0

當然,這些計數是相同的。第一個包含兩個數組,第二個包含兩個字符串。 –

+0

你有沒有試過['array_diff()'](http://php.net/manual/en/function.array-diff.php)? – alanlittle

+0

@ Don'tPanic:用什麼PHP函數來檢查2之間的不同?你知道嗎 ? – ihue

回答

2

我同意這種辦法,是proposed by cmorrissey in the comments似乎最好:

,因爲你知道數組鍵,這將是檢查
if(isset($myArray['content'])){ } else { }


最快的方式對於你不知道數組密鑰是什麼的情況,我以前的答案應該仍然有效:

獲取數組中的第一項。

$first = reset($array); 

然後數一數。

if (count($first) > 1) { 
    // it's like array 1 
} else { 
    // it's like array 2 (count($any_string) always returns 1) 
} 

您也可以使用is_array($first)。這可能會更快一點。

1

我認爲這將有助於你在同一個數量的兩個陣列之間的區別。您可以使用COUNT_RECURSIVE標誌與count函數。

Try this code snippet here

if(count($array1,COUNT_RECURSIVE)==count($array2,COUNT_RECURSIVE)) 
{ 
    echo "Both's value are strings with equal count"; 
} 
elseif(count($array1,COUNT_RECURSIVE)>count($array2,COUNT_NORMAL)) 
{ 
    echo "Array one is array of arrays"; 
} 
else 
{ 
    echo "Array two is array of arrays"; 
} 
0

不能完全確定我理解這個問題逐字,但我最初的感覺是你的意思是檢查父陣列具有子數組元素?

在這種情況下,我認爲你的意思是?

foreach ($response as $element) { 

    if (is_array($element)) { 
     // The element is an array 
    } else { 
     // The element is not an array 
    } 
} 
1

我知道您需要知道數組內是否存在其他數組。我有這個可行的解決方案。

我們可以有一個像這樣的數組:

$array = array(1, "string", array(1, 2)); 

它有一個整數,字符串和數組。我們可以使用gettype()函數來獲取事物的類型。

在這個例子中:

foreach($array as $row) { 
    echo gettype($row) . '<br>'; 
} 

我們有下一個結果:

integer 
string 
array 

我們可以這樣做:

foreach($array as $row) { 
    if(gettype($row) == 'array') { 
    echo "This is an array<br>"; 
    } else { 
    echo "Keep trying guy...<br>"; 
    } 
} 

而結果會是:

Keep trying guy... 
Keep trying guy... 
This is an array 

我希望對你有所幫助,並記住「愛編碼」:)

相關問題