Salut à tous, j'ai une très vaste gamme de revenir comme résultats de la recherche et je veux faire ce qui suit:Array PHP Parsing
Promenade dans le tableau et pour chaque enregistrement avec les mêmes ajouter « spubid » les touches suivantes/vals: "sfirst, smi, slast" au membre du groupe parent dans ce cas, $ a [0]. Donc le résultat serait de laisser $ a [0] intacte mais d'y ajouter les valeurs de sfirst, smi et slast des autres membres du tableau (puisqu'ils ont tous le même "spubid"). Je pense que l'ajout de la valeur clé (1, 2, 3) à la clé associée (sfirst1 => "J.", smi1 => "F.", Slast1 => "Kennedy") serait bien. Je voudrais alors DROP (unset()) le reste des membres dans le tableau avec ce "spubid". Voici un exemple simplifié du tableau Je reviens et dans cet exemple tous les enregistrements ont le même « spubid »:
Array (
[0] =>
Array (
[spubid] => A00502
[sfirst] => J.
[smi] => A.
[slast] => Doe
[1] =>
Array (
[spubid] => A00502
[sfirst] => J.
[smi] => F.
[slast] => Kennedy
[2] =>
Array (
[spubid] => A00502
[sfirst] => B.
[smi] => F.
[slast] => James
[3] =>
Array (
[spubid] => A00502
[sfirst] => S.
[smi] => M.
[slast] => Williamson
)
)
Donc, en substance, je veux garder un $ [0], mais ajouter de nouvelles touches => lui attribue des valeurs (sfirst $ key, smi $ key, slast $ key) et ajoute les valeurs de "sfirst, smi, slast" à TOUS les membres avec le même "spubid" puis unset $ a [1] - [3].
Juste pour clarifier mon résultat final idéal serait:
Array (
[0] =>
Array (
[spubid] => A00502
[sfirst] => J.
[smi] => A.
[slast] => Doe
[sfirst1] => J.
[smi1] => F.
[slast1] => Kennedy
[sfirst2] => B.
[smi2] => F.
[slast2] => James
[sfirst3] => S.
[smi3] => M.
[slast3] => Williamson
)
)
Dans la plupart des cas, je vais avoir un commencer éventail beaucoup plus grand avec qui comprend une multitude de l ' « spubid », mais 99% des publications ont plus d'un auteur, cette routine serait très utile pour nettoyer les résultats et faciliter le processus d'analyse.
*** MISE À JOUR
Je pense de plus en simplifiant mon exemple, je peux avoir fait des choses pas claires. J'aime les réponses de Chacha102 et de zombat, mais mon "tableau parent" contient beaucoup plus qu'un simple pubid, qui est juste la clé primaire. Je dois retenir beaucoup d'autres données de cet enregistrement, une petite partie de c'est la suivante:
[spubid] => A00680
[bactive] => t
[bbatch_import] => t
[bincomplete] => t
[scitation_vis] => I,X
[dentered] => 2009-08-03 12:34:14.82103
[sentered_by] => pubs_batchadd.php
[drev] => 2009-08-03 12:34:14.82103
[srev_by] => pubs_batchadd.php
[bpeer_reviewed] => t
[sarticle] => A case study of bora-driven flow and density changes on the Adriatic shelf (January 1987)
.
.
.
.
.
Il y a environ 40 colonnes qui reviennent à chaque requête de recherche. Plutôt que de les coder en dur comme le font ces exemples avec le pubid, comment puis-je les inclure tout en faisant les changements comme vous l'avez suggéré. Créer un tableau multidimensionnel (comme vous avez tous les deux suggéré) avec les auteurs faisant partie de la multi-dimension est parfaitement bien, merci à tous les deux pour la suggestion.
**** MISE À JOUR:
Voici ce que je me suis installé sur une solution, très simple et fait le travail bien. Je finis par créer un tableau multidimensionnel afin que les auteurs soient dissous.
sur une solution simplifiée:
$apubs_final = array();
$spubid = NULL;
$ipub = 0;
foreach($apubs as $arec)
{
if($spubid != $arec['spubid'])
{
$ipub++;
$apubs_final[$ipub] = $arec;
// insert UNSET statements here for author data
$iauthor = 0;
$spubid = $arec['spubid'];
}
$iauthor++;
$apubs_final[$ipub]['authors'][$iauthor]['sauthor_first'] = $arec['sfirst'];
}
Merci à tous ceux qui ont répondu, votre aide est/a été très appréciée!
C'est une commande importante. –
Serait-il plus facile d'obtenir un tableau de tableaux d'auteurs, chacun contenant sfirst, smi et slast? –
Là, je l'ai fait dans les deux sens pour vous sur ma réponse au cas où vous êtes ouvert à un format différent. –