2014-04-12 2 views
0

array 함수와 동일한 매개 변수를 사용하는 함수를 만들려고합니다. 예제 코드는키 - 값 쌍을 매개 변수로 사용하는 PHP 정의 함수

<?php 
function a ($k=>$v){ 
    echo "key is $k and value is $v"; 
} 

a ('hello' => 'world'); 

이 코드를 실행하려고하면 어떻게됩니까? 나는 내가 PHP를 원하는 것을 할 수 있는지 궁금하고 http://codepad.viper-7.com/SzVBmb

에서 다음

내가 코드를 넣어 가지고

Parse error: syntax error, unexpected '=>' (

같은 오류가 발생했습니다.

편집 : 을 달성하는 가능한 방법하지만 난 정말 안 좋아 :

function a ($arr){ 
    $v = reset($arr); 
    $k = key($arr); 
    echo $key is $k and value is $v"; 
    } 
    a(["hello"=>"world"]); 

는 또한 이런 종류의 일에 대한 튜플을 검색하지만, 운이 없어했다. 당신이 함수에 올바르게 배열을 전송하지 않는

+1

'어레이()'함수는 아니지만 언어 구조는, 함수 파라미터는 콤마로 분리된다. 그냥 쉼표를 사용하면 괜찮을거야. – hynner

+0

설명해 주셔서 감사합니다. 튜플을 사용할 수 없을 것 같아요, 그렇죠? –

답변

0

당신이 올바른

function a ($array) 
    { 

    $key = array_keys($array); 
     echo "key is $key[0] and value is ".$array[$key[0]]; 
    } 

a (array('hello' => 'world')); 

또는

function a ($key,$value) 
    { 
    echo "key is $key and value is ".$value; 
    } 

a ('hello' , 'world'); 

또는

function a ($param) 
    { 
    $param = explode('=>',$param); 
    echo "key is $param[0] and value is ".$param[1]; 
    } 

a ('hello=>world'); 
입니다 array()

내부 'hello' => 'world'를 추가해야

+0

하지만 배열을 보내고 싶지는 않습니다. 내 기능에 키 - 값 쌍을 보내려고합니다. –

+0

그런 다음 쉼표 연산자를 대신 사용하십시오. –

+0

당신은 함수 param 내부에서'=>'를 사용할 수없고, 쉼표를 사용하고 함수 내부의 값을 분해하려고 시도 할 수 없습니다. 또는 배열의 키를 가져 와서 내 대답을 시도하십시오 – Jack

0

이 시도 :

<?php 
function a($a=array()){ 
    foreach($a as $k=>$v){ 
     echo "key is $k and value is $v"; 
    } 
} 

a(array('hello' => 'world')); 
?> 
+0

예, 가능합니다. 그러나 의미 론적으로 그것은 이제 완전히 동일합니다. 가능한 두 요소의 배열을 전달할 수 및 인쇄 된 때문에. –

0

당신은 본질적으로 foreach 루프하지만 서로 다른 구문을 요구하고이

<?php 
$fruits = array("d" => "lemon", "a" => "orange"); 

function test_print($item2, $key) 
{ 
    echo "$key. $item2<br />\n"; 
} 

array_walk($fruits, 'test_print'); 
?> 
0

을보십시오. 첫 번째 세트 만 얻으려는 것 같습니다.

function a(array $arr) { 
    list($k) = array_keys($arr); 
    $r = array($k=>$arr[$k]); 
    unset($arr[$k]); 
    return $r; 
} 

var_dump(a(array("Hi" => "World", "John" => "Smith"))); 

프로그램 출력 :

array(1) { 
    ["Hi"]=> 
    string(5) "World" 
} 

Demo

관련 문제