ProgHelp

Une communauté intelligente et active

"Merge" de deux tableau d'object

Message par Nicogo » 14 Septembre 2017, 15:41

Hello, je code actuellement un plugin Wordpress mais, malheureusement, j'ai un petit problème.

J'utilise 2 tables MySQL : Subscription et Active_Subscription, respectivement :

"subscription_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, hash VARCHAR(255) NOT NULL, version VARCHAR(255) NOT NULL, price INT NOT NULL, subscription_type TINYINT NOT NULL"

"id INT AUTO_INCREMENT PRIMARY KEY, account_id INT NOT NULL, subscription_id INT NOT NULL, subscription_end date NOT NULL"


Mon problème ne vient pas de la récupération des données, mais plutôt de la mise en forme de celles-ci.

function get_user_subscription_data($account_id)
{
global $wpdb, $SubscriptionTableName;
$subscriptions = get_user_active_subscription_data($account_id);
$ids = array_column($subscriptions, 'id');
//echo '<br>';

$sql_results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}$SubscriptionTableName WHERE subscription_id in (". implode(', ',$ids) .")");
$sql_results = json_decode(json_encode($sql_results), True);
print_r($sql_results);
echo '<br><br>';
print_r($subscriptions);
echo '<br><br>';
print_r($subscriptions + $sql_results); // array_merge() ne marche pas non plus.
//return $sql_results;
}


Ma fonction m'affiche à l'écran :
SPOILER : AFFICHER
Array (
[0] => Array ( [subscription_id] => 1 [name] => test [hash] => 000 [version] => 1.0.0.0 [price] => 5 [subscription_type] => 0 )
[1] => Array ( [subscription_id] => 2 [name] => FriendlyBot1.exe [hash] => 000 [version] => 1.0.0.0 [price] => 3 [subscription_type] => 0 ) )

Array (
[0] => Array ( [id] => 1 [account_id] => 24 [subscription_id] => 1 [subscription_end] => 0000-00-00 )
[1] => Array ( [id] => 2 [account_id] => 24 [subscription_id] => 2 [subscription_end] => 0000-00-00 ) )

Array (
[0] => Array ( [id] => 1 [account_id] => 24 [subscription_id] => 1 [subscription_end] => 0000-00-00 )
[1] => Array ( [id] => 2 [account_id] => 24 [subscription_id] => 2 [subscription_end] => 0000-00-00 ) )


alors que j'aimerais :
SPOILER : AFFICHER
Array ( ... )
Array ( ... )

Array (
[0] => Array ( [id] => 1 [account_id] => 24 [subscription_id] => 1 [subscription_end] => 0000-00-00 [name] => test [hash] => 000 [version] => 1.0.0.0 [price] => 5 [subscription_type] => 0 )
[1] => Array ( [id] => 2 [account_id] => 24 [subscription_id] => 2 [subscription_end] => 0000-00-00 [name] => FriendlyBot1.exe [hash] => 000 [version] => 1.0.0.0 [price] => 3 [subscription_type] => 0 ) )


Je veux donc fusionné mes tableaux via leurs "subscription_id". Si quelqu'un a une idée, je suis preneur ! :)
Image
Avatar de l’utilisateur
Nicogo
Administrateur
 
Messages : 458
Points d'honneur : -666 PH
Inscription : 30 Oct 2012

Message par Patak » 15 Septembre 2017, 16:52

$arr1 = [
array("id" => 0, "name" => "Patrick"),
array("id" => 1, "name" => "Pimprenelle"),
array("id" => 2, "name" => "Nicolas")
];

$arr2 = [
array("id" => 0, "age" => 34),
array("id" => 1, "age" => 21),
array("id" => 2, "age" => 78)
];

//Merge version Patak

$merged = $arr1;

$arr1Count = count($arr1);

//Pour chaque element de arr1
for($i = 0; $i < $arr1Count; $i++) {

$id = $arr1[$i]["id"];

//On trouve l'element de arr2 correspondant
$arr2Item = array_values(array_filter($arr2, function($item) use ($id) {
return $item["id"] == $id;
}))[0];

//Pour chaque key / value de l'element correspondant
foreach ($arr2Item as $key => $value) {
//On ajoute la key / value a l'element de merged
$merged[$i][$key] = $value;
}
}

print_r($merged);

/*
Array
(
[0] => Array
(
[id] => 0
[name] => Patrick
[age] => 34
)

[1] => Array
(
[id] => 1
[name] => Pimprenelle
[age] => 21
)

[2] => Array
(
[id] => 2
[name] => Nicolas
[age] => 78
)

)
*/


Tu peux remplacer "id" par "subscription_id" pour ton cas :)
Image


Pour obtenir le Grade Donateur et m'aider à payer l'hébergement de ProgHelp,
Vous pouvez faire un petit don en bas de la page d'accueil, ce sera très apprécié 8-)
Avatar de l’utilisateur
Patak
Administrateur
 
Messages : 1141
Points d'honneur : -666 PH
Inscription : 30 Oct 2012

Message par Nicogo » 17 Septembre 2017, 22:24

Merci Patak !! :grin:
Image
Avatar de l’utilisateur
Nicogo
Administrateur
 
Messages : 458
Points d'honneur : -666 PH
Inscription : 30 Oct 2012


Retour vers Langages du Web

cron
  • Qui est en ligne ?
  • Consulter les nouveaux messages
  • Consulter les messages sans réponse
  • Au total, il y a 1 utilisateur en ligne :: 0 inscrit, 0 invisible et 1 invité (basé sur le nombre d’utilisateurs actifs des 5 dernières minutes)
  • Le nombre maximum d’utilisateurs en ligne simultanément a été de 272 le 12 Mars 2015, 03:11
  • Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité