2017-07-28 3 views
0

Je passe un tableau comme une chaîne en paramètre à une api en php comme ceci:chaîne Convertir en tableau dans l'appel API

http://xx.xx.xx.xx/api.php?query="array(done = 1)" 

Dans mon fichier api, je l'ai utilisé ce tableau pour frapper une requête mongodb :

$query = $_REQUEST['query']; 
$cursor = $collection->find($query); 

Mais cela n'a pas fonctionné. Lorsque j'ai codé en dur array(done = 1) dans la requête find, cela semble fonctionner correctement.

if (array('done' => 1) == $query) { 
    echo "Y"; 
} 
else { 
    echo "N"; 
} 

Le code ci-dessus imprime N. Donc je suppose que c'est parce que $query est passé en tant que chaîne. PS: J'ai également essayé json_encode, json_decode et unerialize mais cela n'a pas fonctionné. Je pourrais faire quelque chose de mal ici.

+0

Comment avez-vous essayé avec json_encode? Montrez-nous s'il vous plaît ... –

+0

Utilisez 'serialize()' et 'unserialize()' ou le faire avec des sessions. – Twinfriends

+0

Vous pouvez suivre ce lien: https://stackoverflow.com/questions/6243051/how-to-pass-an-array-within-a-query-string –

Répondre

1

Bien faites le changement de bit dans votre chaîne de requête, vous passez en requête api. Supposons que votre tableau soit ci-dessous.

$array = array('done' => 1, 'message' => 'success'); 

fonction USE array_map_assoc avec une certaine personnalisation, ce qui rend facile à imploser tableau associatif

function array_map_assoc($callback , $array){ 
    $r = array(); 
    foreach ($array as $key=>$value) 
    $r[$key] = $callback($key,$value); 
    return $r; 
} 

Générer vos données à envoyer dans api nos données

$queryString = implode('&',array_map_assoc(function($k,$v){return "$k=$v";},$array)); 

maintenant envoyer vos données avec API

$url = "http://xx.xx.xx.xx/api.php?" . $queryString ; 

utiliser maintenant print_r($_GET) dans votre page API et vous recevrez des données comme ci-dessous

Array 
(
    [done] => 1 
    [message] => success 
) 

Cela rend votre code facile à manipuler et à utiliser dans les deux cas de requête SQL ou état.