Лучший отвечающий
Работа с блоками в массиве

Вопрос
-
Коллеги, не нашел ответа на свой вопрос или возможно его до конца не осознал.
Прошу помощи.
У меня есть $mass массив, в нем есть 7 блоков (первый блок начинается с $mass[2]) .
Структура блока:
1 - номер региона (R1) нам известно, что начало блока всегда будет в [2],[8],[14],[20],[26],[32],[38]
2 - данные (D2)
3 - данные (D3)
4 - данные (D4)
5 - данные (D5)
6 - данные (D6)
Планируемая логика:
1. Смотрим в первый блок [2], приравниваем значения к переменным, выполняем код.
2. Смотрим в начало второго блока [8], приравниваем значения к переменным, выполняем код.
Сейчас я явно указываю в коде:
$MR1 = $body_array[38]
$acceptor_entity_nameMR = "ID"
$acceptor_list_nameMR = "MR"
$queryMR = new-object Microsoft.SharePoint.SPQuery
$queryMR.query = "
<Where>
<Eq>
<FieldRef Name='$acceptor_entity_nameMR' />
<Value Type='Counter'>$MR1</Value>
</Eq>
</Where>"
$acceptor_listMR = $SpWeb.Lists[$acceptor_list_nameMR]
$collectionMR = $acceptor_listMR.GetItems( $queryMR )#=====================================================
$MrID = $collectionMR[0].ID
#$MrID.ToString() $PeriodID = $collection[0].ID #$PeriodID.ToString() if( !($Issue_list) ) { write-host "ERROR: Не найден список '$Issue_name'" } else { $Issue_item = $Issue_list.Items.Add() $Issue_item["name1"] = new-object Microsoft.Sharepoint.SPFieldLookupValue ($MrID,$collectionMR[0].Name) $Issue_item["name2"] = new-object Microsoft.Sharepoint.SPFieldLookupValue ($PeriodID, $collection[0].Name) $Issue_item["name3"] = $Issue_type $Issue_item["name4"] = $mass[3] $Issue_item["name5"] = $mass[4] $Issue_item["name6"] = $mass[6] $Issue_item["name7"] = $mass[7] update $Issue_item }
- Изменено RitroF 5 июня 2012 г. 6:25
5 июня 2012 г. 5:46
Ответы
-
Если $mass[2] тоже надо в переменные, то так:
for ($j=2; $j -lt 39;$j+=6){ $i = 0 $mass[($j)..($j+5)] | ForEach-Object {Set-Variable -name ("Vr"+$i) -value $_ ;$i++} #тут блок кода, который обрабатывает переменные $Vr0 - $Vr4 }
Тогда будет:
$Vr0 = $mass[2]
$Vr1 = $mass[3]
$Vr2 = $mass[4]
$Vr3 = $mass[5]
$Vr4 = $mass[6]
$Vr5 = $mass[7]
5 июня 2012 г. 7:02
Все ответы
-
Добрый день. Если речь идёт о Powershell, так можно:
for ($j=2; $j -lt 39;$j+=6){ $i = 0 $mass[($j+1)..($j+5)] | ForEach-Object {Set-Variable -name ("Vr"+$i) -value $_ ;$i++} #тут блок кода, который обрабатывает переменные $Vr0 - $Vr4 }
5 июня 2012 г. 6:32 -
Да powershell
Для первого блока $Vr0 = $mass[2], а $Vr4 = $mass[7] ?
5 июня 2012 г. 6:48 -
Нет,
$Vr0 = $mass[3]
$Vr1 = $mass[4]
$Vr2 = $mass[5]
$Vr3 = $mass[6]
$Vr4 = $mass[7]
По описанию я так понял, что $mass[2] это "номер региона (R1)"
- Изменено Deft_ 5 июня 2012 г. 6:57
5 июня 2012 г. 6:56 -
Если $mass[2] тоже надо в переменные, то так:
for ($j=2; $j -lt 39;$j+=6){ $i = 0 $mass[($j)..($j+5)] | ForEach-Object {Set-Variable -name ("Vr"+$i) -value $_ ;$i++} #тут блок кода, который обрабатывает переменные $Vr0 - $Vr4 }
Тогда будет:
$Vr0 = $mass[2]
$Vr1 = $mass[3]
$Vr2 = $mass[4]
$Vr3 = $mass[5]
$Vr4 = $mass[6]
$Vr5 = $mass[7]
5 июня 2012 г. 7:02 -
Deft_
Большое спасибо!
6 июня 2012 г. 5:09 -
Пожалуйста. :)6 июня 2012 г. 5:43