Я хочу сохранить определенные значения из $_POST
в файл. Но я хочу только значения, где ключ находится в массиве $lang
,
В качестве примера:
$_POST = [1 => "a", 2 => "b", 3 => "c"];
$lang = [2, 3];
С этим входом я хотел бы только значения из $_POST
где ключ находится в $lang
массив.
Ожидаемый результат будет:
[2 => "b", 3 => "c"]
Прямо сейчас я пытаюсь заархивировать это, используя ArrayIterator
а также MultipleIterator
, но это проходит через оба массива:
$post = new ArrayIterator($_POST);
$lang_array = new ArrayIterator($lang);
$it = new MultipleIterator;
$it->attachIterator($post);
$it->attachIterator($lang_array);
$fh = fopen('name.php', 'w');
foreach($it as $e) {
fwrite($fh , $e[1] .'-' . $e[0] );
fwrite($fh ,"\n" );
}
Так что я немного застрял, как решить эту проблему?
Попробуй это :
// Combining both arrays into one.
$combined_array = array_merge($_POST, $lang);
$fh = fopen('name.php', 'w');
foreach($combined_array as $key => $value){
fwrite($fh , $key .'-' . $value );
fwrite($fh ,"\n" );
}
Поскольку вы хотите пересечение двух массивов по ключам, вы можете использовать array_intersect_key()
, но так как ключи являются значениями в $lang
вам просто нужно сначала перевернуть array_flip()
, например
print_r(array_intersect_key($_POST, array_flip($lang)));
объединение двух массивов, пожалуйста, попробуйте этот код: —
<?php
$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");
$c=array_combine($fname,$age);
print_r($c);
?>
и два массива объединяются: —
<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
?>
этот код полезен для объединения и объединения двух массивов