我试图比较两个数组,但忽略了第二个数组中的最后四个字符,这是两个数组:
$a1 =array("Maths Foundation","Maths Higher","English Foundation","English Higher","English Lit Foundation","English Lit Higher");
$a2 = array("Maths Foundation 2015","Maths Higher 2014","English Foundation 2015","English Lit Higher 2014");
我希望$a2查看$a1,并将匹配的主题替换为",将不匹配的主题替代为"。所以结果看起来是这样的:
$a3 = array("Maths Foundation 2015","Maths Higher 2014","English Foundation 2015"," ","English Lit Higher 2014");
因此,3美元将用""取代缺失的"英国文学基金会"
////////////////////////////////////////////////////////////////////////////////////////////////////
我想我已经接近了,这是我到目前为止的代码:
$a1=array("Maths Foundation","Maths Higher","English Foundation","English Higher","English Lit Foundation","English Lit Higher");
$subjects = array("Maths Foundation 2015","Maths Higher 2014","English Foundation 2015","English Lit Higher 2014");
$subject = array();
$subjectyr = array();
foreach ($subjects as $v){
$yr = substr($v, -4);
$subb = substr($v, 0, -5);
$subject[] = ''.$subb.'';
$subjectyr[] = ''.$subb.' '.$yr.'';
$a3 = $a1;
$results = array_keys(array_diff($a1, $subjectyr));
foreach ($results as $result)
$a3[$result] = '';
}
$a4 = array_replace($a3,$subjectyr);
$string1 = implode(", ",$a4);
echo $string1;
/////////////////////编辑////////
我决定尝试另一种策略,它越来越近了,但还没有达到:
$a1=array("Maths Foundation","Maths Higher","English Foundation","English Higher","English Lit Foundation","English Lit Higher");
$a2 = array("Maths Foundation 2015","Maths Higher 2014","English Foundation 2015","English Lit Higher 2014");
foreach ($a1 as $a11){foreach ($a2 as $a22){
$a3 = substr($a22, 0, -5);
if ($a3 == $a11){
$thing[] = $a22;
}
else {
$thing[] = "";
}}}
print_r ($thing);
$a1 =array("Maths Foundation","Maths Higher","English Foundation","English Higher","English Lit Foundation","English Lit Higher");
$a2 = array("Maths Foundation 2015","Maths Higher 2014","English Foundation 2015","English Lit Higher 2014");
$temp = array();
$out = array();
foreach($a2 as $element)
$temp[substr($element, 0, -5)]=$element;
foreach($a1 as $element)
$out[]=isset($temp[$element])? $temp[$element] : ' ';
var_dump($out);
输出:
array(6) {
[0]=>
string(21) "Maths Foundation 2015"
[1]=>
string(17) "Maths Higher 2014"
[2]=>
string(23) "English Foundation 2015"
[3]=>
string(1) " "
[4]=>
string(1) " "
[5]=>
string(23) "English Lit Higher 2014"
}
http://codepad.viper-7.com/pDmoZd
这应该适用于您:
<?php
$a1 =array("Maths Foundation","Maths Higher","English Foundation","English Higher","English Lit Foundation","English Lit Higher");
$a2 = array("Maths Foundation 2015","Maths Higher 2014","English Foundation 2015","English Lit Higher 2014");
$a3 = array();
foreach($a2 as $k1 => $v1) {
foreach($a1 as $k2 => $v2) {
if (substr($a2[$k1], 0, -5) == $a1[$k2]) {
$a3[] = $a2[$k1];
break;
} elseif (count($a1) == ($k2+2))
$a3[] = " ";
}
}
var_dump($a3);
?>
输出:
array(5) {
[0]=>
string(21) "Maths Foundation 2015"
[1]=>
string(17) "Maths Higher 2014"
[2]=>
string(23) "English Foundation 2015"
[3]=>
string(2) " "
[4]=>
string(23) "English Lit Higher 2014"
}
试试这个:
$found = 0;
foreach ($a1 as $key => $value) {
$found = 0;
foreach ($subjects as $k => $v) {
if ($value == $substr($v, 0, -5)) {
array_push($subject, $v);
$found = 1;
break;
}
}
if ($found == 0) {
array_push($subject, "");
}
}