2014-01-21 2 views
1

Я следовал this tutorial на tutplus, и я наткнулся на этот фрагмент кода:Является ли это ассоциативным массивом PHP?

//check if the action exists in the controller. if not, throw an exception. 
    if(method_exists($controller, $action) === false) { 
     throw new Exception('Action is invalid.'); 
    } 

    //execute the action 
    $result['data'] = $controller->$action(); 
    $result['success'] = true; 

} catch(Exception $e) { 
    //catch any exceptions and report the problem 
    $result = array(); 
    $result['success'] = false; 
    $result['errormsg'] = $e->getMessage(); 
} 

//echo the result of the API call 
echo json_encode($result); 
exit(); 

Я новичок в PHP, и мне было интересно, если result ассоциативный массив? Может ли кто-нибудь подтвердить это? Как можно отличить ассоциативный массив от неассоциативного массива?

+1

Да. Потому что вы предоставляете каждому элементу массива имя ключа. – Drumbeg

+1

Это ассоциативный массив. Он связывает ключи: «sucess», «errormsg» со значениями. –

+5

Я бы рекомендовал прочитать документацию. http://uk3.php.net/manual/en/language.types.array.php – Drumbeg

ответ

2

$result - ассоциативный массив, поскольку вы назначаете имя ключа.

«Обычный» массив не имеет имени ключа.

4

Чтобы проверить ассоциативный массив или нет, вы можете использовать эту функцию

function is_assoc($var) 
    { 
      return is_array($var) && array_diff_key($var,array_keys(array_keys($var))); 
    } 

    function test($var) 
    { 
      echo is_assoc($var) ? "I'm an assoc array.\n" : "I'm not an assoc array.\n"; 
    } 

    // an assoc array 
    $a = array("a"=>"aaa","b"=>1,"c"=>true); 
    test($a); 
+0

Это отличный способ получить новичка для более самостоятельного изучения, поскольку они начинают задаваться вопросом, что делают эти функции. –

+0

Да. Хорошо, что вы пришли под другим углом. – Drumbeg

Смежные вопросы