2010-10-05 5 views
0

J'ai un tableau appelé $ array_all;PHP & Array question

Ce tableau aura toujours 3 valeurs possibles:

  • 1,
  • 1,2,
  • 1,2,3,

J'ai créé une chaîne à partir du tableau alors que dans une boucle foreach et concaténé une virgule à la fin. Donc, maintenant j'ai une belle chaîne qui affiche la valeur exacte comme il se doit.

1,2,3, Je peux copier cette sortie de mon navigateur et l'insérer dans ma fonction wordpress et tout s'affiche parfaitement.

Le problème se pose lorsque j'insère directement cette variable chaîne dans la fonction wordpress, elle échoue.

Quelqu'un a des idées?

code

ci-dessous:

<?php 
$faux_array = array(); 
$faux_array_all; 

if($five_loans != ''): 
    $faux_array[] = "781"; 
endif; 
if($logbook_loans != ''): 
    $faux_array[] = "797"; 
endif; 
if($easy_money != ''): 
    $faux_array[] = "803"; 
endif; 

foreach($faux_array as $faux_array_value): 
    $faux_array_all .= $faux_array_value . ','; 
endforeach; 

echo $faux_array_all; 

$args = array 
(
    'posts_per_page' => 10, 
    'post_type' => 'lender', 
    'order' => 'ASC', 
    'orderby' => 'date', 
    'post__in' => array($faux_array_all) 
); 
?> 
+0

Poster un code et nous pourrions être en mesure d'aider. – methodin

+0

combien de paramètres votre fonction wp prend-elle? –

+0

il serait également utile si vous postez l'erreur que vous obtenez (le cas échéant) –

Répondre

3

Mmh pour un, vous pouvez éviter la boucle avec juste:

$faux_array_all = implode(',', $faux_array); 

qui résoudrait aussi le proble.m virgule de fin. D'autre part, vous passez un tableau à post__in qui contient seulement un élément (la chaîne). Je pense que ce que vous voulez vraiment est

'post__in' => $faux_array 

comme $faux_array est déjà un tableau avec ID.
En savoir plus sur Post & Page Parameters, là, vous pouvez voir que vous devez passer un tableau d'ID de poste à la fonction, pas un tableau avec une valeur de chaîne:

  • « post__in » => array (5,12,2,14,7) - inclusion, vous permet de spécifier les ID de poste pour récupérer
+0

Bingo !! Félix, merci un million de compagnons! –

1
'post__in' => $faux_array 

Essayez ceci, et si cela ne fonctionne pas après le code que vous faites manuellement travailler s'il vous plaît.

Édité. Vérifie-le maintenant.

+0

Merci, mais c'est le même résultat que le mien. Il ne met qu'un résultat.Cela fonctionne: 'post__in' => array (781,797,) –

1

Vous devez couper la virgule arrière

foreach($faux_array as $faux_array_value): 
    $faux_array_all .= $faux_array_value . ','; 
endforeach; 
if (substr($faux_array_all)-1,1) == ",") { 
$faux_array_all = substr($faux_array_all,0,-1); 
} 
+0

Fonctionne toujours sans cela et pas le problème d'origine mais merci de répondre. –