Merge 2 arrays and keep ONLY duplicates [closed] - php

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
So, i have 2 arrays which look like this:
$a = array(1,3,5);
$b = array(2,3,4,5);
The expected result should look like this:
array(3,5);
Is there a quick and easy way to achieve my expected result? :)

Option One:
$a = array(1,3,5);
$b = array(2,3,4,5);
$result = array_intersect($a, $b);
print_r($result);
Option 1 output:
Array
(
[1] => 3
[2] => 5
)
Option 2:
$a = array(1,3,5);
$b = array(2,3,4,5);
$resultTwo = [];
foreach($a as $val){
if(in_array($val, $b)){
$resultTwo[] = $val;
}
}
print_r($resultTwo);
Option 2 Output (unlike option 1, the array index starts from 0):
Array
(
[0] => 3
[1] => 5
)

Related

String to array when two comma to one array with php [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 2 months ago.
Improve this question
my string has
$string = "apple,banana,orange,lemon";
I want to as
$array = [
[apple,banana],
[orange,lemon]
]
Use array_chunk in combination with explode defined in php https://www.php.net/manual/en/function.array-chunk.php
<?php
$string = "apple,banana,orange,lemon";
$input_array = explode (",", $string);
print_r(array_chunk($input_array, 2));
?>
Will output as below:
Array
(
[0] => Array
(
[0] => apple
[1] => banana
)
[1] => Array
(
[0] => orange
[1] => lemon
)
)
I hope this helps you get on your way. To transform a string to an array, you can use
$elements = explode(',', $string);
This will leave you with this array: ($elements == [apple,banana,orange,apple])
From there, you can build it the way you want, like:
$array[] = [$elements[0], $elements[1]];
$array[] = [$elements[2], $elements[3]];
This results in the array you are looking for, but this solution is only for the string you've given with four elements, separated by comma.

Distinct values using PHP [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
I want to get only the distinct values from $pjt. I have tried the below code:
$unique_pjtdata = array_unique($pjt);
foreach($unique_pjtdata as $val) {
echo $val;
}
I am getting an HTTP Error 500 after trying this code.
Use array_unique().
Example:
$pjt = array(1, 2, 2, 3);
$array = array_unique($pjt);
and if you still get error then you need to enable error reporting to know error.
You can use array_flip() to switch the keys and values in the array therefore forcing duplicate values to overwrite into a unique set of keys:
$b = ["test1", "test2", "test1", "test3"];
$b = array_flip($b);
print_r( $b );
//output
Array
(
[test1] => 2
[test2] => 1
[test3] => 3
)
You can then extract the keys using array_keys():
$b = array_keys($b);
print_r($b)
// output
Array
(
[0] => test1
[1] => test2
[2] => test3
)

check array value exists in another array or not [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
I have 2 fields in a table
filed1 | filed2
ahmed,join,maya,omar | omar,maya
I get data by 2 array , I want check if Each value in $array1 the present in $array2 or not
in my case : if $array1[omar] present in $array2 or not , if $array1[maya] present in $array2 or not .. elc
That's my code , not worked ...What's wrong in it ?
$query = $db->query_first("SELECT * FROM table ");
$array1 = explode(",",$query[filed1]);
$array2 = explode(",",$query[filed2]);
foreach($array1 as $value)
{
if (in_array($value,$array2))
{
//true
}else{
//false
}
}
output of array1 :
Array ( [0] => maya [1] => omar [2] => ahmed [3] => join)
output of array2 :
Array ( [0] => omar [1] => maya )
I have known the cause of the problem, not in the code ... Content of the field at the base value of each line separately So used str_replace to delete the line
$query = $db->query_first("SELECT * FROM table ");
$array1 = explode(",",$query[filed1]);
$array1 = str_replace("\n","",$array1);
$array2 = explode(",",$query[filed2]);
$array2 = str_replace("\n","",$array2);
foreach($array1 as $value)
{
if (in_array($value,$array2))
{
//true
}else{
//false
}
}
As #MarkBaker said, you want to use array_intersect:
array_intersect() returns an array containing all the values of array1 that are present in all the arguments. Note that keys are preserved.
In your case:
$array1 = explode(",",$query[filed1]);
$array2 = explode(",",$query[filed2]);
$intersect = array_intersect($array1, $array2);
Since you asked, to check if this array is empty or not do the following:
if (empty($intersect))
echo 'It is empty';

PHP: Retrieve the value of a specified key in an array [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I have an array labeled $friendRequest.
When i do echo print_r($friendRequest), I get
Array (
[result] => Array (
[0] => Array (
[id] => 11
)
)
)
The part that I care about is [id]=>11, I want to assign that value to a variable. So lets say i have variable $a, $a = 11 is what i want. How can I do this?
Do this:
$a = $friendRequest['result'][0]['id']
var_dump($a); //int 11
you can do that with a code like this:
$a = array['id'];
I guess your array is called "$friendrequest" so let's say
$a = $friendRequest['result'][0]['id']
echo $a;

how to loop over this array to obtain only the number 6 and 2? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am trying to loop over the array called $res, but I want to obtain only the values 6 and 2, for each name it is an id, is its with a foreach o just a normal for? I am confused because the array has two arrays insiden and it increments if I add a new name like 'Joe'
$arrayDirectory = array('Nick', 'Alex');
$res = array();
foreach($arrayDirectory as $user) {
$res[] = $obj->obtainID($user);
}
echo print_r($res);
Array ( [0] => Array ( [0] => Array ( [id_usuario] => 6 [0] => 6 ) ) [1] => Array ( [0] => Array ( [id_usuario] => 2 [0] => 2 ) ) ) 1
foreach ($res as $item) {
echo $item[0][0];
}
Or
foreach ($res as $item) {
echo $item[0]['id_usuario'];
}
Depending on what you are looking for
With PHP5.3 you can also use array_map() with a lambda
$idUsarios = array_map(function ($item) {
return $item[0]['id_usario'];
}, $res);
Change
$res[] = $obj->obtainID($user);
to
$user = $obj->obtainID($user);
$res[] = $user[0]['id_usuario'];

Categories