所以最近我陷入了某种阵列组合和替换状态。
我有这个阵列:
array(5) {
["De"]=>
string(7) "treatee"
["Para"]=>
string(13) "Cristina Isabel Gnap"
["Principio"]=>
string(36) "Agilidade, como dinâmica de ação."
["Descricao"]=>
string(8) "sadsadsa"
}
我想从['Para']
字段中删除中间名,因此我创建了一个for
循环:
for ($i = 0; $i < count($rows); $i++) {
$array = explode(' ', $rows[$i]['Para']);
$firstName = $array[0];
$lastName = $array[count($array) - 1];
$combineNames= $primeiroNome." ".$ultimoNome;
$namesCombined= str_split($combineNomes, 30);
$result = array_replace($rows[$i], $nomesArray);
}
结果当然是显示:
array(5) {
["De"]=>
string(7) "treatee"
["Para"]=>
string(20) "Cristina Isabel Gnap"
["Principio"]=>
string(36) "Agilidade, como dinâmica de ação."
["Descricao"]=>
string(8) "sadsadsa"
["0"]=>
string(13) "Cristina Gnap"
}
但我实际上需要做的是将["Para"]
字段替换为新的["0"]
字段,但是当我放入{{1}时像for
这样的东西它会返回:
$result = array_replace($rows[$i]['Para'], $nomesArray);
任何人都可以帮助我吗? = d
答案 0 :(得分:0)
要遍历数组,您可以使用foreach循环。 $row
的前缀为&
,因此您所做的任何更改都将应用于原始数组(通过引用传递)。
foreach ($rows as &$row) {
$original_string = $row['Para'];
// make your changes here and assign the new value to $new_string
$row['Para'] = $new_string;
}
供参考,
http://php.net/manual/en/control-structures.foreach.php
http://php.net/manual/en/language.references.pass.php
答案 1 :(得分:0)
您可以使用preg_split和foreach循环的组合来实现,如下所示。顺便说一句,您可以测试结果here:
<?php
$arr = [
"De" =>"treatee",
"Para" => "Cristina Isabel Gnap",
"Principio" =>"Agilidade, como dinâmica de ação.",
"Descricao" =>"sadsadsa",
];
var_dump($arr);
foreach($arr as $key=>&$value){
if($key == "Para"){
if(is_string($value)) {
$arrSplits = preg_split("#\s#", $value);
if (count($arrSplits) == 3) {
unset($arrSplits[1]);
$arr[$key] = implode(" ", $arrSplits);
}
}
}
}
var_dump($arr);
第一次VAR_DUMP结果
array (size=4)
'De' => string 'treatee' (length=7)
'Para' => string 'Cristina Isabel Gnap' (length=20)
'Principio' => string 'Agilidade, como dinâmica de ação.' (length=42)
'Descricao' => string 'sadsadsa' (length=8)
结果为2ND VAR_DUMP
array (size=4)
'De' => string 'treatee' (length=7)
'Para' => string 'Cristina Gnap' (length=13)
'Principio' => string 'Agilidade, como dinâmica de ação.' (length=42)
'Descricao' => string 'sadsadsa' (length=8)
或者,你可以将上面的内容封装到一个接受数组的函数中并传入你的数组,如下所示:
<?php
function removeMiddleNamesFromArray(&$dataArray){
foreach($dataArray as $key=>&$value){
if($key == "Para"){
if(is_string($value)){
$arrSplits = preg_split("#\s#", $value);
if( count($arrSplits) == 3){
unset($arrSplits[1]);
$arr[$key] = implode(" ", $arrSplits);
}
}
}
}
return $dataArray;
}
var_dump(removeMiddleNamesFromArray($arr));
<强>转储强>
array (size=4)
'De' => string 'treatee' (length=7)
'Para' => string 'Cristina Gnap' (length=13)
'Principio' => string 'Agilidade, como dinâmica de ação.' (length=42)
'Descricao' => string 'sadsadsa' (length=8)
或者,你可以将上面的内容封装到一个接受数组的函数中并传入你的数组,如下所示:
答案 2 :(得分:0)
请使用unset()函数
$array = array {
["De"]=>
string(7) "treatee"
["Para"]=>
string(13) "Cristina Isabel Gnap"
["Principio"]=>
string(36) "Agilidade, como dinâmica de ação."
["Descricao"]=>
string(8) "sadsadsa"
}
unset($array['pra']);